我有一个可以执行"IntPow(3,2)"等功能的mathparser.如果用户粘贴"1,000,000"然后添加加号,则使完整的等式"1,000,000 + IntPow(3,2)"解析器失败,因为它不适用于包含逗号的数字.
我需要从"1,000,000"中删除逗号,而不是从"IntPow(3,2)"中删除逗号,因为IntPow有两个用逗号分隔的参数.最终的等式将是"1000000 + IntPow(3,2)".等式存储在一个字符串中.如何仅删除括号外的逗号?我假设并说包含逗号的数字不会放在IntPow参数列表中.
当我说"删除逗号"时,我的意思是删除"CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator",它可以是逗号或句点,具体取决于本地.这部分很简单,因为我假设将使用RegEx,我可以在RegEx逗号位置连接该值.
我有这个RegEx:(.*?)用于查找它们内部的括号和值但我不确定如何只删除RegEx匹配之外的逗号.
最简单的方法是不要试图让正则表达式做到这一点.只需在字符串上循环一个字符.如果你读'(',递增一个计数器.如果你读''',则递减该计数器.如果您读取逗号,请在计数器为0时将其删除,否则请将其保留.