使用逗号分隔符拆分字符串,但如果是使用C#的货币值则不会

时间:2015-06-05 05:15:43

标签: c# regex split

我必须拆分一个包含正常值和货币值的字符串

i.e. aaa,bbb,$33,222,ccc,$22,000

预期输出:

-aaa
-bbb
-$33,222
-ccc
-$22,000

3 个答案:

答案 0 :(得分:1)

根据以下正则表达式进行拆分。

@",(?!\d)"

这将匹配所有未跟随数字的逗号。 (?!\d)声称匹配后面不能有数字。

DEMO

在c#中这应该有用。

@"(?<!\$\d+),(?!\d+)"

答案 1 :(得分:0)

我建议抓住捕获而不是拆分。

(\$\d+(?:,\d+)*(?:\.\d+)*)|([^,\n]+)

试试这个。请参阅演示。稍后您可以-添加capturegroup个结果。

https://regex101.com/r/nS2lT4/14

答案 2 :(得分:0)

给出一些非正则表达式的答案。您可以执行以下操作:

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(",");
}

这会用完全停止或任何你想要的东西替换货币逗号,这样你就可以在逗号上轻松地分割字符串。拥有令牌后,您可以随时将其更改回逗号。请注意,这仅适用于货币值始终为小数的假设。