我正在阅读一个文本文件,我需要使用我标记为{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))
这是一个很好的方法吗?
答案 0 :(得分:10)
fileText = fileText.Replace("{" & i & "}", DisplayStudentData(i))
替换会返回新字符串。它不会修改调用它的字符串。
你也可以这样做:
fileText = String.Format(fileText, Enumerable.Range(0,7).Select(Function(i) DisplayStudentData(i)).ToArray())
为什么DisplayStudentData首先不是一个数组(这会使string.Format(更容易)?)
答案 1 :(得分: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对象的属性。