我可以用这个:
String str = "TextX Xto modifyX";
str = str.replace('X','');//that does not work because there is no such character ''
是否有一种方法来删除字符X的所有出现从一个字符串在Java?
我尝试了这个,不是我想要的:str.replace('X',' ');//替换为空格
我可以用这个:
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,"");
这应该会给你想要的答案。
其他回答
使用
public String replaceAll(String regex, String replacement)
将工作。
使用str.replace("X", "");
执行
"Xlakjsdf Xxx".replaceAll("X", "");
返回:
lakjsdf xx
使用replaceAll代替replace
str = str.replaceAll("X,"");
这应该会给你想要的答案。
尝试使用重载来接受CharSequence参数(例如,String)而不是char:
str = str.replace("X", "");
如果你想用Java字符串做一些事情,Commons Lang StringUtils是一个很好的地方。
StringUtils.remove("TextX Xto modifyX", 'X');
这里是一个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()中,此解决方案可以一次性删除多个字符。