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 の正規表現は遅いですか、問題である他のものを追加しましたか、それとも元のコードはそのままで問題ありませんか?