use*_*786 15 java regex string split
我有一个字符串:
String str = "a + b - c * d / e < f > g >= h <= i == j";
Run Code Online (Sandbox Code Playgroud)
我想在所有运算符上拆分字符串,但在数组中包含运算符,因此生成的数组如下所示:
[a , +, b , -, c , *, d , /, e , <, f , >, g , >=, h , <=, i , ==, j]
Run Code Online (Sandbox Code Playgroud)
我现在有这个:
public static void main(String[] args) {
String str = "a + b - c * d / e < f > g >= h <= i == j";
String reg = "((?<=[<=|>=|==|\\+|\\*|\\-|<|>|/|=])|(?=[<=|>=|==|\\+|\\*|\\-|<|>|/|=]))";
String[] res = str.split(reg);
System.out.println(Arrays.toString(res));
}
Run Code Online (Sandbox Code Playgroud)
这非常接近,它给出了:
[a , +, b , -, c , *, d , /, e , <, f , >, g , >, =, h , <, =, i , =, =, j]
Run Code Online (Sandbox Code Playgroud)
有什么我可以做到这一点,使多个字符操作符出现在数组中,就像我想要的那样?
作为一个不太重要的次要问题,正则表达式是否有办法从字母周围修剪空白?
Ich*_*aum 38
String[] ops = str.split("\\s*[a-zA-Z]+\\s*");
String[] notops = str.split("\\s*[^a-zA-Z]+\\s*");
String[] res = new String[ops.length+notops.length-1];
for(int i=0; i<res.length; i++) res[i] = i%2==0 ? notops[i/2] : ops[i/2+1];
Run Code Online (Sandbox Code Playgroud)
这应该做到这一点.一切都很好地存储在res.
use*_*own 16
str.split (" ")
res27: Array[java.lang.String] = Array(a, +, b, -, c, *, d, /, e, <, f, >, g, >=, h, <=, i, ==, j)
Run Code Online (Sandbox Code Playgroud)
小智 5
String str = "a + b - c * d / e < f > g >= h <= i == j";
String reg = "\\s*[a-zA-Z]+";
String[] res = str.split(reg);
for (String out : res) {
if (!"".equals(out)) {
System.out.print(out);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:+ - * / < > >= <= ==