我必須解析字符串才能創建PathSegmentCollection。該字符串由逗號和/或(任意)空格(如換行符,製表符等)分隔的數字組成,也可以使用科學記數法編寫該數字。從字符串中提取數字
這是一個例子:"9.63074,9.63074 -5.55708e-006 0 ,0 1477.78"
而且要點是:P1(9.63074,9.63074),P2(-0,555708,0),P3(0,1477.78)
要提取數字我使用正則表達式:
Dim RgxDouble As New Regex("[+-]?\b[0-9]+(\.[0-9]+)?(e[+-]?[0-9]+)?\b")
Dim Matches As MatchCollection = RgxDouble.Matches(.Value)
Dim PSegmentColl As New PathSegmentCollection
Dim PFigure As New PathFigure
With Matches
If .Count < 2 OrElse .Count Mod 2 <> 0 Then Exit Sub
PFigure.StartPoint = New Point(.Item(0).Value, .Item(1).Value)
For i As UInteger = 2 To .Count - 1 Step 2
Dim x As Double = .Item(i).Value, y As Double = .Item(i + 1).Value
PSegmentColl.Add(New LineSegment With {.Point = New Point(x, y)})
Next
End With
它的工作原理,但我必須解析大約十萬(或更多)字符串,並以這種方式太慢。我想找到一個更高效的解決方案,而大多數時候這些數字並不是用科學計數法編寫的,如果您認爲這是更好的方法,那麼使用C/C++編寫的使用C/C++編寫的程序集就沒有問題不是託管代碼或C#不安全代碼。
您應該添加具有感興趣語言的標籤 - 我不認爲很多人將「字符串」作爲主題進行跟蹤,而許多人則遵循C# ,VB或C++(或者您認爲與您的問題相關的任何其他語言)。 – assylias 2012-04-07 10:02:47
完成(.NET和C++/CLI相關),謝謝。 – gliderkite 2012-04-07 10:10:02
順便說一句,'-5.55708e-006'不是'-0,555708',它是'-0,00000555708'。 – Vlad 2012-04-07 10:13:34