我正在尝试删除字符串中的每个标点符号:到目前为止,我已完成以下操作:
String line = "there's, isn't";
line.replaceAll("\\p{Punct}", "")
然而,这不能将“有”变成“theres”或“is not”变成“isnt”。
我认为\ p {Punct}包含每个标点符号,包括“'”(如api中所示),但这不起作用。有人可以帮忙吗?
提前致谢。
PS:预期结果是:theres isnt
答案 0 :(得分:3)
字符串在Java中是不可变的。字符串方法不会更改字符串,而是返回字符串的修改副本,因此您需要将结果分配回变量:
String line = "there's, isn't";
line = line.replaceAll("\\p{Punct}", "");
System.out.println(line); // theres isnt
答案 1 :(得分:0)
如前一个答案所述,字符串是不可变的,一旦创建,您就无法真正对其进行更改。因此,一旦您像String line = "there's, isn't";
这样编码,就将创建字符串对象"there's, isn't"
并将line
变量分配给它。 Java没有指针的概念,但是您可以将其视为指向给定字符串line
的{{1}}变量。现在,您的下一行"there's, isn't"
返回一个新创建的字符串对象。您可以将其分配给另一个变量,例如line.replaceAll("\\p{Punct}", "")
并打印出来:因此,这是完全更新的代码:
line_cleared=line.replaceAll("\\p{Punct}", ""