我的方法成功地采用了二叉表达式树并将其转换为前缀、后缀和中缀表示法。但是,由于最终字符串的准确性,它必须完全相等。
因此,在返回输出之前,我将运行一个方法来快速编辑该输出以消除任何缺陷。
(* (+ 8 4) (- 7 (/ 6 3))) ===> (*(+ 8 4)(- 7(/ 6 3)))
((8 4 +) (7 (6 3 /) -) ) =====> ((8 4 +)(7 (6 3 /)-))
需要改变的是括号之间的间距。我的目标是找到字符串的所有大小写,将其删除,然后重新输入字符串(不含空格)。
underlines are extra spaces (*(+ 8 4)(- 7_(/ 6 3)))
我的代码应该是 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() 的强大功能?
编辑:谢谢大家,但我意识到我只需要处理主要方法本身
最佳答案
正如其他答案/评论中提到的,String.split
采用模式字符串(正则表达式),这就是您收到不匹配的括号错误的原因。您可以使用 Pattern.quote
获取与您的字符串文字匹配的模式字符串的方法:
yourString.split(java.util.regex.Pattern.quote(") ("));
关于Java String.split错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20234003/