[英]How to Split a String without deleting split character
我想将一个String
拆分成多个部分,但是当字符串被拆分时,不应删除该字符。
在我的示例中,我想要输出:
parts[0]= 4x
parts[1]= -3y
parts[2]= 6z
parts[3]= 3v
这是我的代码:
import java.util.Arrays;
public class Polynomaddition {
public static void main(String[] args) {
String fraction = "4x-3y+6z+3v";
String [] parts = fraction.split("(?<=\\[a-z]");
System.out.println(Arrays.toString(parts));
//String result = calculator(fraction);
}
public static String calculator(String s) {
String result = "";
String [] parts = s.split("(?<=[a-z])", -1);
return result;
}
}
在您的情况下,您似乎想要这个正则表达式\\+|(?=-)
:
String[] parts = fraction.split("\\+|(?=-)");
细节
\\+
加号|
或者(?=-)
减去而不删除它或者使用您的正则表达式,但您需要检查每个结果,例如:
String[] parts = Arrays.stream(fraction.split("(?<=[a-z])"))
.map(s -> s.startsWith("+") ? s.substring(1, s.length()) : s)
.toArray(String[]::new);
输出
[4x, -3y, 6z, 3v]
我根本不会使用split
。 相反,使用匹配实际多项式项的模式,并使用匹配器,特别是它的find和group方法,来提取每个匹配项:
List<String> parts = new ArrayList<>();
Matcher termMatcher = Pattern.compile("[-+]?\\d+[a-z]").matcher(fraction);
while (termMatcher.find()) {
String part = termMatcher.group();
if (part.startsWith("+")) {
part = part.substring(1);
}
parts.add(part);
}
System.out.println(parts);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.