我正在尝试解析以下格式的字符串:
boolean1 && boolean2 &&..... booleank
或
boolean1 || boolean3 || .... booleank
当||和&&可以出现在每个布尔值(在String中,我有自己的测试,以查看该字符串是否可以是布尔值),在此: String [] array = {boolean1,boolean2,.... booleank} 我的所有数据都以字符串形式出现,而我的代码(预期不能正常工作)就是:
String line = "a || b && c"; //Just an example to test
String[] booleans = line.split("[||,&&]*");
for(String x: booleans){
x = x.replaceall("\\s*","");
System.out.println(x);
}
这不能按预期工作.. 我想要它打印: 一个 b ç
输出我接收:
答案 0 :(得分:2)
这个正则表达式应该有效:
\s*(&&|\|\|)\s*
用法:
String line = "a || b && c"; //Just an example to test
String[] booleans = line.split("\\s*(&&|\\|\\|)\\s*");
for(String x: booleans) {
System.out.println(x);
}
它也会删除空格,因此不需要下面的行:
x = x.replaceall("\\s*", "");
答案 1 :(得分:0)
如果您不需要阵列,可以这样做:
String line = "a || b && c"; //Just an example to test
String newLine = line.replaceAll("(\\|\\|)|&&", "");
System.out.println("Line: " + line);
System.out.println("newLine: " + newLine);
输出:
Line: a || b && c
newLine: a b c
否则,所选答案将删除所有空白区域,从而删除\s*
String line = "a || b && c"; //Just an example to test
String newLine = line.replaceAll("\\s*(&&|\\|\\|)\\s*", "");
System.out.println("Line: " + line);
System.out.println("newLine: " + newLine);
输出:
Line: a || b && c
newLine: abc