Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java String.split错误_Java_String_Split - Fatal编程技术网

Java String.split错误

Java String.split错误,java,string,split,Java,String,Split,我的方法成功地获取了一个二进制表达式树,并将其转换为前缀、后缀和中缀符号。但是,由于最终字符串的准确性,它必须完全相等 因此,在返回输出之前,我将运行一个方法来快速编辑该输出,以消除任何缺陷 (*(+84)(-7(/63)))==>(*(+84)(-7(/63))) ((84+)(7(63/))==>((84+)(7(63/))) 需要改变的是双方之间的间距。我的目标是找到一个字符串的所有大小写,删除它们,然后重新放入不带空格的字符串 下划线是额外的空格 (*(+84)(-7(/63))) 我的

我的方法成功地获取了一个二进制表达式树,并将其转换为前缀、后缀和中缀符号。但是,由于最终字符串的准确性,它必须完全相等

因此,在返回输出之前,我将运行一个方法来快速编辑该输出,以消除任何缺陷

(*(+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的代码会让每个节点在其子节点之间放置一个空格