1

我正在阅读一个文本文件,我需要用我用 {0}、{1}、{2}、{3}、{4}、{5}、{6} 标记的新文本替换一些区域。

所以我加载文本,将其保存到字符串变量,然后使用 String.Replace 但它不起作用。

        For i As Integer = 0 To 6
            fileText.Replace("{" & i & "}", DisplayStudentData(i))
        Next

DisplayStudentData 看起来像这样:

        Protected Function DisplayStudentData(ByVal itemNumber As Integer) As String

        Dim dsItem As String = ""
        If itemNumber <> -1 Then
            Select Case itemNumber
                Case 0
                    dsItem = "testFirstName"
                Case 1
                    dsItem = "testTitle"
                Case 2
                    dsItem = "testClass"
                Case 3
                    dsItem = "testTeacher"
                Case 4
                    dsItem = "testDept"
                Case 5
                    dsItem = "testEmail"
                Case 6
                    dsItem = "testPhone"
            End Select
        End If
        Return dsItem
    End Function

看起来上面应该可以工作,但事实并非如此。

任何帮助将不胜感激。

谢谢!


好吧,我想通了...

我将所有数据项放入一个数组中,然后在加载文本文件后执行此操作:

            fileText = String.Format(fileText, dArr(0), dArr(1), dArr(2), dArr(3), dArr(4), dArr(5), dArr(6))

这是一个好方法吗?

4

2 回答 2

10
fileText = fileText.Replace("{" & i & "}", DisplayStudentData(i))

替换返回一个字符串。它不会修改调用它的字符串。

你也可以这样做:

fileText = String.Format(fileText, Enumerable.Range(0,7).Select(Function(i) DisplayStudentData(i)).ToArray())

为什么 DisplayStudentData 首先不只是一个数组(这会使 string.Format() 更容易)?

于 2012-05-03T16:26:53.973 回答
2

另一方面,如果您知道字符串将始终保持不变

你可以做类似的事情

dim myTestString = "{0} {1} {2} {3} {4} {5} {6}"
dim result as string = string.format(myTeststring, "testFirstName", 
 "testTitle", "testClass", "testTeacher", "testDept", "testEmail", "testPhone")

你总是可以让它成为你的 studentdata 对象的属性。

于 2012-05-03T16:31:38.397 回答