Java String.split错误
我的方法成功地获取了一个二进制表达式树,并将其转换为前缀、后缀和中缀符号。但是,由于最终字符串的准确性,它必须完全相等 因此,在返回输出之前,我将运行一个方法来快速编辑该输出,以消除任何缺陷 (*(+84)(-7(/63)))==>(*(+84)(-7(/63))) ((84+)(7(63/))==>((84+)(7(63/))) 需要改变的是双方之间的间距。我的目标是找到一个字符串的所有大小写,删除它们,然后重新放入不带空格的字符串 下划线是额外的空格 (*(+84)(-7(/63))) 我的代码被支持为Java String.split错误,java,string,split,Java,String,Split,我的方法成功地获取了一个二进制表达式树,并将其转换为前缀、后缀和中缀符号。但是,由于最终字符串的准确性,它必须完全相等 因此,在返回输出之前,我将运行一个方法来快速编辑该输出,以消除任何缺陷 (*(+84)(-7(/63)))==>(*(+84)(-7(/63))) ((84+)(7(63/))==>((84+)(7(63/))) 需要改变的是双方之间的间距。我的目标是找到一个字符串的所有大小写,删除它们,然后重新放入不带空格的字符串 下划线是额外的空格 (*(+84)(-7(/63))) 我的
String.split(“)(”)代码>但是错误符号<代码>不匹配的结束“)(???
public String antibullshiter(String out) {
out = out.replaceFirst(") (", "X"); //edited
String[] parts = out.split("X");
String part1 = parts[0];
String part2 = parts[1];
part1 = part1 + ")";
part2 = part2 + "(";
out = part1 + part2;
return out;}
如何利用String.split()的强大功能
编辑:谢谢大家,但我意识到我必须处理主要方法本身因为,
字符串
是不可变的。要获得replaceFirst
方法的更改,需要使用out
重新分配。还需要跳过元字符
out=out.replaceFirst("\\)\\s*\\(", "X");
因为,
String
是不可变的。要获得replaceFirst
方法的更改,需要使用out
重新赋值。还需要跳过元字符
out=out.replaceFirst("\\)\\s*\\(", "X");
使用
s.replaceAll((?使用s.replaceAll((?可以使用此正则表达式删除括号周围的空格):
out=out.replaceAll(“\\s*([()])\\s*”,“$1”);
您可以使用此正则表达式删除括号周围的空格:
out=out.replaceAll(“\\s*([()])\\s*”,“$1”);
试试这个。它会替换字符串
out.replaceFirst("\\) \\(", "X");
试试这个。它会替换字符串
out.replaceFirst("\\) \\(", "X");
如其他答案/注释中所述,String.split
采用模式字符串(正则表达式),这就是为什么会出现不匹配括号错误。您可以使用该方法获取与字符串文字匹配的模式字符串:
yourString.split(java.util.regex.Pattern.quote(") ("));
如其他答案/注释中所述,String.split
采用模式字符串(正则表达式),这就是为什么会出现不匹配括号错误。您可以使用该方法获取与字符串文字匹配的模式字符串:
yourString.split(java.util.regex.Pattern.quote(") ("));
您需要理解,因为split()
不使用普通字符串来拆分您需要理解的内容,因为split()
不使用普通字符串来拆分您所要求的内容。out=out.replaceFirst(“)(“,”X”);但是没有任何错误发生变化。我已经完成了您所要求的内容。out=out.replaceFirst(“,”X“);但未发生任何错误更改。此正则表达式不会删除多个(连续)spaces@cosjav我假设OP的代码会让每个节点在其子节点之间放置一个空格。尽管你的观点是正确的,但这个正则表达式不会删除多个(连续的) spaces@cosjav我假设OP的代码会让每个节点在其子节点之间放置一个空格