【问题标题】:How to use replace(char, char) to replace all instances of character b with nothing如何使用 replace(char, char) 将字符 b 的所有实例替换为空
【发布时间】:2011-10-24 05:21:57
【问题描述】:

如何使用replace(char, char) 将字符“b”的所有实例替换为空。

例如:

Hambbburger to Hamurger

编辑: 约束只有 JDK 1.4.2,意味着没有重载版本的替换!

【问题讨论】:

  • 你不能因为'nothing'不是字符!为什么不能使用replace(String,String)
  • 嗨 Dogbane,它适用于 Java 5 及更高版本,不会有适用于 1.4.2 的重载版本。

标签: java replace


【解决方案1】:

还有一个使用字符串的replaceAll 函数,但请注意,它将它们评估为正则表达式,但替换单个字符就可以了。

这是一个例子:

String meal = "Hambbburger";

String replaced = meal.replaceAll("b","");

请注意,replaced 变量是必需的,因为replaceAll 不会更改字符串,而是创建一个新的替换字符串(String 在 java 中是不可变的)。

如果您要替换的字符在正则表达式中具有不同的含义(例如,. 字符将匹配任何字符,而不是点),您需要 quote 第一个参数,如下所示:

String meal = "Ham.bur.ger";

String replaced = meal.replaceAll(Pattern.quote("."),"");

【讨论】:

  • @Sean,我第一次错过了函数名,然后编辑它:)
  • 你为什么改变你的答案? String.replace() 更好!
  • 关于String#replace (@MByD) 已经有一个很好的答案,我会留下这个,因为replace 重载仅是java6 和更高版本
  • (@Pablo Fernandex) 有没有严格的方法只使用 replace(char, char) 来实现这一点?
  • @Pablo 没有看到要求。 java 1.4.x:真糟糕。我会去找另一份工作:-)
【解决方案2】:

字符串是不可变的,因此请确保将结果分配给字符串。

String str = "Hambbburger";
str = str.replace("b", "");

如果您使用 Java 6,则不需要 replaceAll。请参见此处:replace

【讨论】:

  • 知道有一个replace 超载!
【解决方案3】:
String text = "Hambbburger";
text = text.replace('b', '\0');

'\0' 表示 ASCII 码中的 NUL。

【讨论】:

  • @Tom 它打印 Hamurger。
  • 然后你的控制台打印出来的和我的不同,因为我的控制台明确显示了\0 字符(不能在这里显示,因为 SO 删除了它们)。因此,此解决方案可能取决于将要运行的系统。奇怪。
  • 答案应该被删除,因为它是错误的'\000' 只代表 NUL 字符。更换前后检查text的长度!它没有改变。
  • @GuidoFlohr 已编辑答案。确实,长度没有改变,那些 NUL 仍然存在。但它可以满足 OP 的要求。
  • @Andrew OP 要求用 nothing 替换,但 NUL 字节不是什么,但有时看起来什么都没有(而且不可打印的字符比 NUL 多得多,例如“\u200b”又名零宽度空间)。将“System.out.println(text)”添加到您的代码中,将输出重定向到一个文件并在 vi/vim 中打开它。您将阅读“Ham^A^A^Aurger”,因为 NUL 字节是 CTRL-A。原始海报显然意味着“删除 b”,而您的代码没有这样做。抱歉,如果这听起来很粗鲁,但您的回答会让初学者感到困惑,而且真的没有帮助。
【解决方案4】:

试试这个代码....

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-----\n");
      System.out.print(g);

}
}

输出

汉堡包。我想吃汉堡包。 ---------更换后----- 汉堡包。我想吃汉堡包。

【讨论】:

    【解决方案5】:

    String 中的replaceAll 无法正常工作。始终建议使用replace()

    例如:-

    String s="abcdefabcdef";
    s=s.replace("a","");
    

    【讨论】:

    • 嗨,欢迎来到 SO。 replaceAll 很好,不知道你从哪里得到的——你手头有特定的越野车吗?你也没有回答这个问题 - OP想要 remove 一个字符,而用 replace(char, char) 没有办法做到这一点。
    【解决方案6】:
        String str="aabbcc";
        int n=str.length();
        char ch[]=str.toCharArray();
    
        for(int i=0;i<n-1;i++)
        {
            for(int j=i+1;j<n;j++)
            {
                if(ch[i]==ch[j])
                {
                   ch[j]='*';
                }
            }
        }
        String temp=new String(ch);
    
        for(int i=0;i<temp.length();i++)
        {
            if(temp.charAt(i)!='*')
            System.out.print(temp.charAt(i));
        }
    

    【讨论】:

    • 您还可以更改相同字符的位置。此代码也可以使用。
    猜你喜欢
    • 2011-07-25
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 2013-05-13
    相关资源
    最近更新 更多