我有一个类似23.Piano+trompet
的字符串,我想使用此函数从字符串中删除23.
部分:
private String removeSignsFromName(String name) {
name = name.replaceAll(" ", "");
name = name.replaceAll(".", "");
return name.replaceAll("\\^([0-9]+)", "");
}
但它没有做到。此外,运行时没有错误。
答案 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)
两个问题:
。在第二个replaceAll应该被转义:
name=name.replaceAll("\\.", "");
第三个中的^不应该被转义:
return name.replaceAll("^([0-9]+)", "");
哦!由于您不使用捕获的字符串,因此括号无用。
答案 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);
}