我的string.split()

问题描述 投票:0回答:4

IAM AM将方程式字符串分为字符串数组:

String[] equation_array = (equation.split("(?<=[-+×÷)(])|(?=[-+×÷)(])"));

N NOW对于测试字符串:

test = "4+(2×5)"

恢复很好:

test_array = {"4", "+", "(", "2",...}

但用于测试字符串:

test2 = "(2×5)+5"

我有字符串数组:

test2_array = {"", "(", "×",...}.

所以,问题是为什么在分裂后在数组中添加一个空字符串?

    

java regex string split equation
4个回答
2
投票
避免使用此空的结果使用此:

(

是什么意思是避免在线开始时分裂。

您可以添加条件,如果以前是字符串的开始之前,请不要拆分。 negative lookahead based regex

    

向后看如何确保我们不在字符串的开头,并期待确保我们不在最后?

0
投票

String[] equation_array = "(2×5)+5".split("(?!^)((?<=[-+×÷)(])|(?=[-+×÷)(]))"); //=> ["(", "2", "×", "5", ")", "+", "5"]

here
(?!^)

0
投票
"(?<=[-+×÷)(])|(?<!^)(?=[-+×÷)(])" ^^^^^^

是字符串指示器的启动和末端,

"(?<=[-+×÷)(])(?!$)|(?<!^)(?=[-+×÷)(])"
^

是lookahead和lookbehind.

    

  
问题是为什么在分裂后在数组中添加一个空字符串?
由于输入$the the the string的正则划分匹配的正则是正面的,因为前面的正面外观

(?!...)

0
投票
(?<!...)

(
之前就在这里匹配,导致一个空字符串:

(2×5)+5

我的建议是不使用正则表达式来解析数学表达式,而是更合适的算法。

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.