VB.NET:除正常字母外的所有内容都拆分字符串

时间:2013-02-23 13:15:16

标签: arrays vb.net function split letter

我正在尝试在除了普通字母之外的所有内容中拆分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做,或者你必须编写一个新函数,它会如何工作?

1 个答案:

答案 0 :(得分:2)

Regex.Split可能是使用负字符组的方法。

例如:

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

或者也可以处理非ASCII字母:

 Dim bits = Regex.Split(text, "[^\p{L}]")