如何使用replace(char,char)将字符" b"的所有实例全部替换为空。
例如:
Hambbburger to Hamurger
编辑:有一个约束,我只能使用1.4.2,这意味着没有重载版本的replace!
你不能因为什么都不是字符! 为什么不能使用replace(String,String)?
Java的可能重复项:从字符串中删除所有出现的char
嗨,Dogbane,适用于Java 5及更高版本,其1.4.2版将没有重载版本。
还有一个replaceAll函数使用字符串,但是请注意,它会将它们评估为正则表达式,但是替换单个字符就可以了。
这是一个例子:
String meal ="Hambbburger";
String replaced = meal.replaceAll("b","");
请注意,replaced变量是必需的,因为replaceAll不会更改字符串的位置,而是创建一个替换的字符串(String在Java中是不可变的)。
如果要替换的字符在正则表达式中具有不同的含义(例如. char将匹配任何char,而不是点),则需要quote第一个参数,如下所示:
String meal ="Ham.bur.ger";
String replaced = meal.replaceAll(Pattern.quote("."),"");
它对于b可以正常工作,但是对于.则不行...
@Sean,我第一次错过了函数名称,然后对其进行了编辑:)
你为什么改变答案? String.replace()更好!
关于String#replace(@MByD)的答案已经很不错了,因为replace重载是java6或更高版本,所以请不要理会
(@Pablo Fernandex)是否有严格的方法仅使用replace(char,char)来实现这一目标?
@Pablo没有看到要求。 Java 1.4.x:令人讨厌。我去找另一份工作:-)
@没有没有
@Sean,不用担心,最后一句话不是原始问题的一部分:)
@Pablo对此表示感谢。
@Sean抱歉,我这么晚才传达。
字符串是不可变的,因此请确保将结果分配给字符串。
String str ="Hambbburger";
str = str.replace("b","");
如果使用Java 6,则不需要replaceAll。请参见此处:replace
我知道有一个replace重载!
试试这个代码。
public class main {
public static void main(String args[]){
String g="Hambbburger.i want to eat Hambbburger.";
System.out.print(g);
g=g.replaceAll("b","");
System.out.print("---------After Replacement-----
");
System.out.print(g);
}
}
输出
Hambbburger.i想吃汉堡包。 ---------更换后-----
Hamurger.i想吃Hamurger。
String text ="Hambbburger";
text = text.replace('b', '\0');
'\0'代表ASCII码中的NUL。
@Tom打印Hamurger。
然后,您的控制台会以与我的不同的方式打印它,因为我的控制台显式显示了\0字符(不能在此处显示它,因为SO删除了它们)。因此,此解决方案可能取决于将在其上运行的系统。奇怪。
应该删除答案,因为它是错误的\000除了NUL字符外什么都不代表。更换前后检查text的长度!它没有改变。
@GuidoFlohr编辑答案。的确,长度没有变化,并且那些NUL仍然存在。但这确实满足了OP的要求。
@Andrew OP要求什么都不要替换,但NUL字节不是什么,而是有时看起来什么都不是(并且比NUL还要有很多不可打印的字符,例如" u200b",也称为零宽度空间)。在代码中添加" System.out.println(text)",将输出重定向到文件,然后在vi / vim中打开它。您将读到" Ham ^ A ^ A ^ Aurger",因为NUL字节是CTRL-A。原始海报清楚地表示"删除bs",而您的代码则不这样做。抱歉,如果这听起来很粗鲁,但您的回答对初学者来说很混乱,而且实际上没有帮助。
"……有时候看起来……"->"…………有时候看起来……"
String str="aabbcc";
int n=str.length();
char ch[]=str.toCharArray();
for(int i=0;i
{
for(int j=i+1;j
{
if(ch[i]==ch[j])
{
ch[j]='*';
}
}
}
String temp=new String(ch);
for(int i=0;i
{
if(temp.charAt(i)!='*')
System.out.print(temp.charAt(i));
}
您也可以更改相同字符的位置。此代码也将起作用。
String中的replaceAll无法正常工作。建议始终使用replace()
例如:-
String s="abcdefabcdef";
s=s.replace("a","");
嗨,欢迎来到。 replaceAll很好,不确定从哪里得到的-您是否有特定的越野车箱?另外,您也不会回答这个问题-OP想要删除一个字符,而没有办法通过replace(char,char)来实现。