gpt4 book ai didi

java - 如何将运算符上的数学表达式拆分为分隔符,同时将它们保留在结果中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:41:02 25 4
gpt4 key购买 nike

我需要拆分像

这样的表达式
a+b-c*d/e 

分别得到a, b, c, d, e (作为字符串数组)以及 =-*d/(也是一组运算符)分开。我试过这样的:

String myString;

String myString={"a+b-c*d/e");

String[] result=new String();

String[] separator=new String[]{"+","-","/","*"};

result=myString.split(separator);

但是,它显示错误。如何解决?

最佳答案

第一个问题:-

多次声明String myString;

第二个问题:-

字符串未正确初始化。末尾缺少双引号。从末端移除支架和支架。

String myString = "a+b-c*d/e";

第三个问题:-

使用字符串对象而不是数组对象初始化的字符串数组。

String[] result=new String();  // Should be `new String[size]`

事实上,您不需要事先初始化数组。

第四个问题:-

String.split将正则表达式作为参数,您已经传递了一个数组。不会工作。

使用:-

String[] result = myString.split("[-+*/]");

拆分所有运算符。


关于您的声明:-

as well as =, -, *, d, / (also an array of operators) separately.

我不明白你在这里想要什么。您的示例字符串不包含 = .和 d不是 operator .请查看是否要对其进行编辑。

更新:-

如果你想在你的数组中也保留运算符,你可以使用这个正则表达式:-

String myString= "a+b-c*d/e";
String[] result = myString.split("(?<=[-+*/])|(?=[-+*/])");
System.out.println(Arrays.toString(result));

/*** Just to see, what the two parts in the above regex print separately ***/
System.out.println(Arrays.toString(myString.split("(?<=[-+*/])")));
System.out.println(Arrays.toString(myString.split("(?=[-+*/])")));

输出:-

[a, +, b, -, c, *, d, /, e]
[a+, b-, c*, d/, e]
[a, +b, -c, *d, /e]

(?<=...)表示 look-behind assertion , 和 (?=...)表示 look-ahead assertion .

关于java - 如何将运算符上的数学表达式拆分为分隔符,同时将它们保留在结果中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13525024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com