我有一個字符串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個十進制數字)
我有一個字符串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個十進制數字)
使用Regex
和Double.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
表示形式轉換爲其雙精度浮點數等效形式。
var result = Regex.Matches(rx, @"\d+([,.]\d{1,3})?");
我很抱歉,我要說的是,我真的是C#中的noob ... 那個「var result」可以是雙精度嗎? – 2012-07-25 09:30:37
此var將成爲由Regex.Matches方法返回的類型,即MatchCollection,因此結果將成爲MatchCollection類型的對象。有了這個集合,你仍然需要迭代它並將值加倍。 – 2012-07-25 09:44:06
[你有什麼試過?](http://WhatHaveYouTried.com) – 2012-07-25 09:02:03
看看正則表達式。 – Zak 2012-07-25 09:02:54