1

通常の文字を除くすべての文字列をVB.NETで分割しようとしています。

Char.IsLetter(...)を使用して関数を作成しようとしましたが、何らかの理由でうまく機能しませんでした(クラッシュした場所にコメントを付けました):

Private Function splitAtNonLetter(ByVal SplitString As String) As String()
    Dim NonCharSplitArray As String() = {}
    Dim ProcessValueTemp As String = String.Empty
    For Each Letter As Char In SplitString
        If Char.IsLetter(Letter) Then
            ProcessValueTemp += Letter.ToString
        Else
            NonCharSplitArray(NonCharSplitArray.Length) = ProcessValueTemp
            ProcessValueTemp = String.Empty
        End If
    Next

    If ProcessValueTemp.Length > 0 Then
        ' Crashes in the next line: Index out of range exception...
        NonCharSplitArray(NonCharSplitArray.Length) = ProcessValueTemp
    End If

    Return NonCharSplitArray
End Function

(正規表現を使用しようとしましたが、これまで使用したことがないため、実際に機能させることもできませんでした)

RegExpsでそれを行う方法はありますか、それとも新しい関数を作成する必要があり、それはどのように機能しますか?

4

1 に答える 1

2

Regex.Splitおそらく、否定的な文字グループを使用する方法です。

例えば:

 Dim bits = Regex.Split(text, "[^a-zA-z]")

または、非ASCII文字にも対応するには:

 Dim bits = Regex.Split(text, "[^\p{L}]")
于 2013-02-23T13:22:45.400 に答える