2012-07-25 76 views
0

我有一個字符串string rx; 這串具有以下類型的數據: 「V = 123.111i = 10.123r = 1234 \ r \ n」 個掃描數值C#

所以,我想: - 具有3個浮點(或其他十進制var)變量,「v」i「和」r「 -scan字符串...格式字符串如」v =%。3fi =%。3fr = %.3f \ r \ n」,其中%.3f是值(3個十進制數字)

+2

[你有什麼試過?](http://WhatHaveYouTried.com) – 2012-07-25 09:02:03

+0

看看正則表達式。 – Zak 2012-07-25 09:02:54

回答

0

使用RegexDouble.Parse

var inputString = @"v=123.111i=10.123r=1234\r\n"; 

foreach (Match match in Regex.Matches(inputString, @"\d+[.]?\d{3}")) 
{ 
    double result = Double.Parse(match.Value); 
} 

解釋:

\d+   digits (0-9) 
      (1 or more times, matching the most amount possible) 

[.]?   character of: '.' 
      (optional, matching the most amount possible) 

\d{3}  digits (0-9) 
      (3 times) 

,我用Double.Parse。它將數字的string表示形式轉換爲其雙精度浮點數等效形式。

0

var result = Regex.Matches(rx, @"\d+([,.]\d{1,3})?");

+0

我很抱歉,我要說的是,我真的是C#中的noob ... 那個「var result」可以是雙精度嗎? – 2012-07-25 09:30:37

+0

此var將成爲由Regex.Matches方法返回的類型,即MatchCollection,因此結果將成爲MatchCollection類型的對象。有了這個集合,你仍然需要迭代它並將值加倍。 – 2012-07-25 09:44:06