你能告訴我如何使用正則表達式找出下面那種字符串的$數量嗎?我不擅長的正則表達式:(預先感謝。
jone has done $15 per unit: "good luck"
結果應該是= $ 15
你能告訴我如何使用正則表達式找出下面那種字符串的$數量嗎?我不擅長的正則表達式:(預先感謝。
jone has done $15 per unit: "good luck"
結果應該是= $ 15
你可以用一個很簡單的正則表達式像
\$\d+
\$
匹配$
\d+
匹配一個或多個數字例
string str = "jone has done $15 per unit: \"good luck\"";
Regex pattern = new Regex (@"\$\d+");
Match match = pattern.Match(str);
Console.WriteLine(match.Groups[0]);
=> $15
EDIT
要包括小數以及
\$\d+(?:\.\d+)?
\.
匹配小數點\d+
匹配一個或多個數字?
量詞,零個或一個presceding模式匹配。該量詞確保小數部分的可選匹配。例
string str = "jone has done $15.5 per unit: \"good luck\"";
Regex pattern = new Regex (@"\$\d+(?:\.\d+)?");
Match match = pattern.Match(str);
Console.WriteLine(match.Groups[0]);
=> $15.5
這個什麼:
/\$\d*/
對於多個結果:
/\$\d*/g
下面是使用LINQ和decimal.TryParse
與正確的文化和NumberStyles.Currency
沒有正則表達式完全不同的方法:
string text = "jone has done $ per unit: \"good luck\"";
var dollars = text.Split()
.Select(s => s.TryGetDecimal(usCI, NumberStyles.Currency))
.Where(d => d.HasValue);
Console.Write(string.Join(",", dollars)); // 15
使用此擴展名嘗試將字符串解析爲decimal?
:
public static decimal? TryGetDecimal(this string item, IFormatProvider formatProvider = null, NumberStyles nStyles = NumberStyles.Any)
{
if (formatProvider == null) formatProvider = NumberFormatInfo.CurrentInfo;
decimal d = 0m;
bool success = decimal.TryParse(item, nStyles, formatProvider, out d);
if (success)
return d;
else
return null;
}
你可以調整它爲小數嗎? – Sampath
@Sampath我編輯了我的答案。希望它可以幫助你:) – nu11p01n73R
是的。非常感謝我的朋友:) – Sampath