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 回答