java string replace 重载_关于Java:如何使用replace(char,char)替换字符b的所有实例为空...

如何使用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)来实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值