使用逗号分隔符分割字符串,但如果它是使用c#的货币值则不分割
本文关键字:分割 货币 分隔符 字符串 如果 | 更新日期: 2023-09-27 17:53:39
我必须拆分一个包含正常值和货币值的字符串
i.e. aaa,bbb,$33,222,ccc,$22,000
期望输出:
-aaa
-bbb
-$33,222
-ccc
-$22,000
按照下面的正则表达式进行分割。
@",(?!'d)"
将匹配后面没有数字的所有逗号。(?!'d)
断言匹配后不能跟数字
在c#中应该可以。
@"(?<!'$'d+),(?!'d+)"
只是给出了一个非正则表达式的答案。您可以执行以下操作:
String[] MySplit(String str)
{
bool currency = false;
char[] chars = str.ToCharArray();
for(int i = 0; i < str.Length(); ++i)
{
if(chars[i] == '$')
currency=true;
else
if(currency && chars[i] == ',')
{
chars[i] = '.';
currency = false;
}
}
return new String(chars).Split(",");
}
这将用句号或任何你想要的东西替换货币逗号,这样你就可以舒服地用逗号分割字符串。一旦有了令牌,您总是可以将其更改回逗号。注意,这只适用于货币值总是有小数的假设。
我建议抓取而不是分割。
('$'d+(?:,'d+)*(?:'.'d+)*)|([^,'n]+)
试试这个。看到演示。您可以稍后将-
附加到每个capture
或group
结果。