我可以用这个:
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',' ');//替换为空格
当前回答
我喜欢在这种情况下使用RegEx:
str = str.replace(/X/g, '');
g是全局的,所以它会遍历你的整个字符串,把所有X替换为"; 如果你想同时替换X和X,你可以简单地说:
str = str.replace(/X|x/g, '');
(看我的小提琴在这里:小提琴)
其他回答
如果你想用Java字符串做一些事情,Commons Lang StringUtils是一个很好的地方。
StringUtils.remove("TextX Xto modifyX", 'X');
我喜欢在这种情况下使用RegEx:
str = str.replace(/X/g, '');
g是全局的,所以它会遍历你的整个字符串,把所有X替换为"; 如果你想同时替换X和X,你可以简单地说:
str = str.replace(/X|x/g, '');
(看我的小提琴在这里:小提琴)
在替换期间,您需要将需要删除的字符放在方括号内。示例代码如下所示:
String s = "$116.42".replaceAll("[$]", "");
你可以使用str = str.replace("X", "");如前所述,你会没事的。“”不是空字符(或有效字符),而“\0”是。
所以你可以使用str = str.replace('X', '\0');代替。
这里是一个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()中,此解决方案可以一次性删除多个字符。