我一直坚持用货币符号和文本分隔数字值。我有一个清单,其中有类似的值
$ 164.5
256.29 $
3,056.46
121.88 EUR
€156.12
我需要将货币的符号/代码和数字值分开。
有人可以帮忙吗?
一个很好的资源是:http : //www.regexr.com/
Regex r = new Regex(@"((?<CurrencySymbol>(?<=\s)[^\d\-+\.,]{1,3}) *(?<CurrencyValue>[0-9\.,]+))|((?<CurrencyValue>[0-9\.,]+) *(?<CurrencyCode>[A-Z]{3}))");
string sss =
@"$164.5
256.29 SAR
œ3,056.46
121.88 EUR
€156.12";
var matches= r.Matches(sss);
foreach (Match match in matches)
{
Console.WriteLine("____________ "+match.Value);
if (match.Groups["CurrencySymbol"].Success)
Console.WriteLine("CurrencySymbol: " + match.Groups["CurrencySymbol"].Value);
if (match.Groups["CurrencyValue"].Success)
Console.WriteLine("CurrencyValue: " + match.Groups["CurrencyValue"].Value);
if (match.Groups["CurrencyCode"].Success)
Console.WriteLine("CurrencyCode: " + match.Groups["CurrencyCode"].Value);
}
结果:
____________ $164.5
CurrencySymbol: $
CurrencyValue: 164.5
____________ 256.29 SAR
CurrencyValue: 256.29
CurrencyCode: SAR
____________ o3,056.46
CurrencySymbol: o
CurrencyValue: 3,056.46
____________ 121.88 EUR
CurrencyValue: 121.88
CurrencyCode: EUR
____________ €156.12
CurrencySymbol: €
CurrencyValue: 156.12
模式说明:
((?<CurrencySymbol>(?<=\s)[^\d\-+\.,]{1,3}) *(?<CurrencyValue>[0-9\.,]+))|((?<CurrencyValue>[0-9\.,]+) *(?<CurrencyCode>[A-Z]{3}))
[0-9\.,]+
-匹配数字,逗号或点,至少1次
(?<CurrencyValue>[0-9\.,]+)
-是一个已命名的组
[A-Z]{3}
-使字符串完全由3个大写字母组成(我认为所有货币代码都这样。.?)
(?<CurrencyCode>[A-Z]{3})
-是一个已命名的组
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句