VB.net 中的正则表达式代码是否已知很慢?
我接管了一些清理大量文本数据的代码。代码运行得相当慢,所以我一直在寻找一些方法来加快它。我发现了一些运行很多的函数,我认为这可能是问题的一部分。
这是清除电话号码的原始代码:
Dim strArray() As Char = strPhoneNum.ToCharArray
Dim strNewPhone As String = ""
Dim i As Integer
For i = 0 To strArray.Length - 1
If strArray.Length = 11 And strArray(0) = "1" And i = 0 Then
Continue For
End If
If IsNumeric(strArray(i)) Then
strNewPhone = strNewPhone & strArray(i)
End If
Next
If Len(strNewPhone) = 7 Or Len(strNewPhone) = 10 Then
Return strNewPhone
End If
我重写了代码以使用正则表达式消除数组和循环。
Dim strNewPhone As String = ""
strNewPhone = Regex.Replace(strPhoneNum, "\D", "")
If strNewPhone = "" OrElse strNewPhone.Substring(0, 1) <> "1" Then
Return strNewPhone
Else
strNewPhone = Mid(strNewPhone, 2)
End If
If Len(strNewPhone) = 7 Or Len(strNewPhone) = 10 Then
Return strNewPhone
End If
运行几次测试后,新代码比旧代码慢得多。VB.net 中的正则表达式是否很慢,我是否添加了其他一些问题,或者原始代码是否正常?