你能告诉我如何使用正则表达式找出下面那种字符串的$数量吗?我不擅长的正则表达式:(预先感谢。
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