从字符串中删除所有出现的char

evi*_*iko 299 java string character

我可以用这个:

String str = "TextX Xto modifyX";
str = str.replace('X','');//that does not work because there is no such character ''
Run Code Online (Sandbox Code Playgroud)

有没有办法X从Java中的String中删除所有出现的字符?

我试过这个并不是我想要的: str.replace('X',' '); //replace with space

Luk*_*keH 505

尝试使用CharSequence参数重载(例如String),而不是char:

str = str.replace("X", "");
Run Code Online (Sandbox Code Playgroud)

  • @vsb:不对.该特定重载的两个参数都是`CharSequence`.http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace%28java.lang.CharSequence,%20java.lang.CharSequence%29 (9认同)
  • @Kunal:我想你需要[`toString`](http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#toString%28%29) .所以你的代码看起来像`str = str.replace(yourChar.toString(),"");` (7认同)
  • 第一个参数是正则表达式,有时它不会按预期工作,特别是如果此字符串来自用户输入. (2认同)

Mic*_*les 42

运用

public String replaceAll(String regex, String replacement)
Run Code Online (Sandbox Code Playgroud)

将工作.

用法是str.replace("X", "");.

执行

"Xlakjsdf Xxx".replaceAll("X", "");
Run Code Online (Sandbox Code Playgroud)

收益:

lakjsdf xx
Run Code Online (Sandbox Code Playgroud)

  • 正则表达式可能是矫枉过正的,除非你正在仅限于支持Java 1.4 - 由于1.5版出现了一个`replace`超载,需要一个简单的`CharSequence`. (6认同)
  • @LukeH,这是String.replace的反编译源.它正在使用正则表达式.我同意它的正则表达式感觉很重,但即使对于上面接受的答案,这也是引擎盖下的内容.public String replace(CharSequence var1,CharSequence var2){return Pattern.compile(var1.toString(),16).matcher(this).replaceAll(Matcher.quoteReplacement(var2.toString())); } (3认同)

Are*_*rff 24

如果你想对Java Strings做一些事情,Commons Lang StringUtils是一个很好看的地方.

StringUtils.remove("TextX Xto modifyX", 'X');
Run Code Online (Sandbox Code Playgroud)


小智 7

String test = "09-09-2012";
String arr [] = test.split("-");
String ans = "";

for(String t : arr)
    ans+=t;
Run Code Online (Sandbox Code Playgroud)

这是我从字符串中删除字符的示例.

  • 这是非常低效的,特别是与公认的答案相比. (4认同)
  • 我认为这个答案有效,但正确的答案是更短更快 (3认同)