Java的:从字符串删除号码(Java: Remove numbers from string)

2019-09-27 17:50发布

我有这样一个字符串23.Piano+trompet ,我想删除23.使用此函数的字符串部分:

private String removeSignsFromName(String name) {
    name = name.replaceAll(" ", "");
    name = name.replaceAll(".", "");

    return name.replaceAll("\\^([0-9]+)", "");
}

但它并没有这样做。 此外,还有在运行时没有任何错误。

Answer 1:

以下内容替换所有空格字符( \\s ),点( \\.以及数字( \\d )与""

name.replaceAll("^[\\s\\.\\d]+", "");

如果我想要什么,以取代+_

name.replaceAll("^[\\s\\.\\d]+", "").replaceAll("\\+", "_");


Answer 2:

你不需要逃脱^ ,您可以使用\\d+来匹配多个数字, \\. 对于文字点及无需多次调用replaceAll 。 例如,

private static String removeSignsFromName(String name) {
    return name.replaceAll("^\\d+\\.", "");
}

这是我喜欢测试

public static void main(String[] args) {
    System.out.println(removeSignsFromName("23.Piano+trompet"));
}

和GOT

Piano+trompet


Answer 3:

两个问题:

  1. 的。 在第二的replaceAll应该进行转义:

     name=name.replaceAll("\\.", ""); 
  2. 在第三个的^不应该被转义:

     return name.replaceAll("^([0-9]+)", ""); 

哦! 和括号是无用的,因为你不使用捕获的字符串。



Answer 4:

return name.replaceFirst("^\\d+\\.", "");


Answer 5:

这个怎么样:

public static String removeNumOfStr(String str) {
    if (str == null) {
        return null;
    }
    char[] ch = str.toCharArray();
    int length = ch.length;
    StringBuilder sb = new StringBuilder();
    int i = 0;
    while (i < length) {
        if (Character.isDigit(ch[i])) {
            i++;
        } else {
            sb.append(ch[i]);
            i++;
        }
    }
    return sb.toString();
}


Answer 6:

public static void removenum(String str){

    char[] arr=str.toCharArray();
    String s="";

    for(char ch:arr){

        if(!(ch>47 & ch<57)){

            s=s+ch;
        }
            }
    System.out.println(s);

}


文章来源: Java: Remove numbers from string