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))

Replace は新しい文字列を返します。呼び出し元の文字列は変更されません。

これを行うこともできます:

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")

いつでも学生データ オブジェクトのプロパティにすることができます。

于 2012-05-03T16:31:38.397 に答える