如何在没有任何内容的情况下替换字符串中的字符和单词?

时间:2016-11-22 16:35:30

标签: java string replace

String mGateway = "null,"
String mGateway2 = ",nullnull"
String mGateway3 = ",,,,null,"
mGateway.replaceAll("[null,]","");

例如,我想替换所有逗号(,)和所有单词&#34; null&#34;没有。 <{1}},System.out.println(mGateway)System.out.println(mGateway2)的输出都应为空白。

2 个答案:

答案 0 :(得分:2)

要替换确切的字词,请使用\\b中的regex,如下所示:

mGateway.replaceAll("\\bnull\\b|," , "");

所以这用空字符串替换null,(因此"")。

答案 1 :(得分:1)

首先,字符串是不可变的。这意味着您无法更改其状态,因此您无法更改其所持有的字符。 replace方法的作用是创建具有基于原始String的替换字符的新String,因此您需要存储返回String的某个地方(即使在包含原始String的引用中)。

示例:

String myText = "foo bar";

// this doesn't change string held by `myText`
myText.replace("foo", "x");

// this assigns new string with replaced characters to `res`
String res = myText.replace("foo", "x"); 

但是你还有第二个问题。根据{{​​1}}语法,您似乎想要使用正则表达式,但[...]不支持它。你想要的是replace

最后在正则表达式replaceAll代表 characters set,因此[...]表示如果单个字符为[null,]或{{1}或n(第二u无关)或l。如果您想查找单词,则无法使用l。您需要由,表示的OR运算符(与许多其他语言一样)。

所以你的代码应该看起来像

[...]

我还假设您|中没有String replaced = text.replaceAll("null|,", ""); 这样的字词,因为nullable部分也会从中删除。如果您想要在匹配另一个单词的一部分时避免出现这种情况,可以使用word boundaries \b将该单词包围起来。这表示字母和非字母字符之间的位置(它还包括文本的开头/结尾)。

更安全的解决方案可能看起来像

text