2

この機能を使用してテキストを反転していますが、速度に少し問題があります。テスト用に、130,000 文字のテキストがあり、約 10 秒かかります。それを高速化することは可能ですか?この質問は、vb.net であるため、C# とは異なります。

Function ReverseString(ByRef strString As String) As String
        Dim NextChr, TempString As String, StringLength, Count As Integer, NewString As String = Nothing

        TempString = strString
        StringLength = Len(TempString)
        Do While Count <= StringLength
            Count = Count + 1
            NextChr = Mid(TempString, Count, 1)
            NewString = NextChr & NewString
        Loop
        ReverseString = NewString
End Function
4

5 に答える 5

3

これを試して:

 Function Reverse(ByVal value As String) As String
    ' Convert to char array.
    Dim arr() As Char = value.ToCharArray()
    ' Use Array.Reverse function.
    Array.Reverse(arr)
    ' Construct new string.
    Return New String(arr)
    End Function

出典: dot net perls

于 2013-10-17T01:52:55.253 に答える
2

おそらくhttp://msdn.microsoft.com/en-us/library/e462ax87(v=vs.90).aspxのようなものでしょうか? VBで:

Dim TestString As String = "ABCDEFG" 
' Returns "GFEDCBA". 
Dim revString As String = StrReverse(TestString)
于 2013-10-17T01:53:45.777 に答える
2
Function ReverseString(ByRef strString As String) As String
    Dim charArray As Char() = strString.ToCharArray()
    Array.Reverse(charArray )
    Dim strReversed As New String(charArray )
    ReverseString = strReversed
End Function
于 2013-10-17T01:53:56.387 に答える
0

文字列を文字配列に変換してから、Array.Reverse.

これを試してみたところ、26,673,152 文字の文字列で 0.862 秒で実行されました。確かに、私はかなり高速な PC を使用していますが、それでもまだです。

于 2013-10-17T01:57:17.850 に答える
-1

他の回答で述べたように、これには特別な関数を使用することをお勧めします: StrReverse

ただし、独自の関数が必要な場合は、これを使用できます。より高速になるはずです。

Function ReverseString(ByRef strString As String) As String
    Dim builder As New System.Text.StringBuilder(strString.Length)
    Dim index As Integer = strString.Length - 1
    While index >= 0
        builder.Append(strString.Chars(index))
        index = index - 1
    End While
    ReverseString = builder.ToString
End Function
于 2013-10-17T02:06:14.720 に答える