Java: удалить числа из строки

У меня есть строка как 23.Piano+trompetи я хотел удалить 23. часть из строки, используя эту функцию:

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

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

Но это не делает этого. Кроме того, нет ошибки во время выполнения.

5 ответов

Решение

Следующее заменяет все пробельные символы (\\s), точки (\\.) и цифры (\\d) с "":

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

Что делать, если я хочу заменить + с _?

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

Вам не нужно избегать ^, ты можешь использовать \\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

Две проблемы:

  1. . во втором заменителе все должно быть экранировано:

    name=name.replaceAll("\\.", "");
    
  2. ^ В третьем не следует избегать:

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

Ой! и скобки бесполезны, так как вы не используете захваченную строку.

Как насчет этого:

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();
}
return name.replaceFirst("^\\d+\\.", "");
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);

}
Другие вопросы по тегам