Java:从字符串中删除数字

时间:2017-01-06 11:45:56

标签: java regex string replaceall

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

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

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

但它没有做到。此外,运行时没有错误。

6 个答案:

答案 0 :(得分:2)

您无需转义^,您可以使用\\d+匹配多个数字,\\.代表文字点,您不需要多次调用{ {1}}。例如,

replaceAll

我测试的是

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

得到了

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

答案 1 :(得分:2)

以下内容用\\s替换所有空白字符(\\.),点(\\d)和数字(""):

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

如果我想将+替换为_

,该怎么办?
name.replaceAll("^[\\s\\.\\d]+", "").replaceAll("\\+", "_");

答案 2 :(得分:1)

两个问题:

  1. 。在第二个replaceAll应该被转义:

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

    return name.replaceAll("^([0-9]+)", "");
    
  3. 哦!由于您不使用捕获的字符串,因此括号无用。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如何?

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();
}

答案 5 :(得分:-1)

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);

}