San*_*rma 6 java regex string split
我需要拆分一个表达式
a+b-c*d/e
Run Code Online (Sandbox Code Playgroud)
并获得a,b,c,d,eseperately(字符串数组)以及=,-,*,d,/(也为运营商的阵列)分开.我尝试过:
String myString;
String myString={"a+b-c*d/e");
String[] result=new String();
String[] separator=new String[]{"+","-","/","*"};
result=myString.split(separator);
Run Code Online (Sandbox Code Playgroud)
但是,它显示错误.怎么解决?
Roh*_*ain 18
第一个问题: -
多重声明 String myString;
第二个问题: -
字符串初始化不正确.两端缺少双引号.从两端卸下支架和支架.
String myString = "a+b-c*d/e";
Run Code Online (Sandbox Code Playgroud)
第3个问题: -
String数组使用String对象而不是数组对象初始化.
String[] result=new String(); // Should be `new String[size]`
Run Code Online (Sandbox Code Playgroud)
实际上,您不需要事先初始化数组.
第四个问题: -
String.split将Regular Expression作为参数,您已经传递了一个数组.不管用.
使用: -
String[] result = myString.split("[-+*/]");
Run Code Online (Sandbox Code Playgroud)
拆分所有运营商.
关于你的这句话: -
以及
=, -, *, d, /(也是一组运营商)分开.
我不明白你想要什么.您的示例字符串不包含=.而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("(?=[-+*/])")));
Run Code Online (Sandbox Code Playgroud)
输出: -
[a, +, b, -, c, *, d, /, e]
[a+, b-, c*, d/, e]
[a, +b, -c, *d, /e]
Run Code Online (Sandbox Code Playgroud)
(?<=...)手段look-behind assertion和(?=...)手段look-ahead assertion.
| 归档时间: |
|
| 查看次数: |
30587 次 |
| 最近记录: |