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
Две проблемы:
. во втором заменителе все должно быть экранировано:
name=name.replaceAll("\\.", "");
^ В третьем не следует избегать:
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();
}
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);
}