Java: 从字符串中删除数字

Java: Remove numbers from string

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

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

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

但它并没有这样做。另外,运行时也没有报错。

你不需要转义^,你可以用\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"));
}

得到了

Piano+trompet

以下将所有空白字符 (\s)、点 (\.) 和数字 (\d) 替换为 "":

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

what if I want to replace the + with _?

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

两个问题:

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

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

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

哦!并且括号没有用,因为您不使用捕获的字符串。

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

}

这个怎么样:

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