删除/忽略给定字符串中的所有标点符号

时间:2018-04-04 02:00:58

标签: java

我正在尝试删除字符串中的每个标点符号:到目前为止,我已完成以下操作:

String line = "there's, isn't";

line.replaceAll("\\p{Punct}", "")

然而,这不能将“有”变成“theres”或“is not”变成“isnt”。

我认为\ p {Punct}包含每个标点符号,包括“'”(如api中所示),但这不起作用。有人可以帮忙吗?

提前致谢。

PS:预期结果是:theres isnt

2 个答案:

答案 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}", ""