我可以用这个:

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

是否有一种方法来删除字符X的所有出现从一个字符串在Java?

我尝试了这个,不是我想要的:str.replace('X',' ');//替换为空格


当前回答

使用replaceAll代替replace

str = str.replaceAll("X,"");

这应该会给你想要的答案。

其他回答

如果你想用Java字符串做一些事情,Commons Lang StringUtils是一个很好的地方。

StringUtils.remove("TextX Xto modifyX", 'X');
String test = "09-09-2012";
String arr [] = test.split("-");
String ans = "";

for(String t : arr)
    ans+=t;

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

这里是一个lambda函数,它删除所有作为字符串传递的字符

BiFunction<String,String,String> deleteChars = (fromString, chars) -> {
  StringBuilder buf = new StringBuilder( fromString );
  IntStream.range( 0, buf.length() ).forEach( i -> {
    while( i < buf.length() && chars.indexOf( buf.charAt( i ) ) >= 0 )
      buf.deleteCharAt( i );
  } );
  return( buf.toString() );
};

字符串 str = “TextX XYto modifyZ”; deleteChars.apply( str, “XYZ” ); –> “要修改的文本”

此解决方案考虑到,在删除字符时,生成的字符串(in difference to replace())永远不会比起始字符串大。因此,它避免了在像replace()那样将字符附加到StringBuilder时重复分配和复制。 更不用说replace()中毫无意义的Pattern和Matcher实例的生成,这些实例永远不需要删除。 在difference to replace()中,此解决方案可以一次性删除多个字符。

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

str = str.replace("X", "");

在替换期间,您需要将需要删除的字符放在方括号内。示例代码如下所示:

String s = "$116.42".replaceAll("[$]", "");