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+\.", "");
两个问题:
。在第二个 replaceAll 应该被转义:
name=name.replaceAll("\.", "");
第三个中的^不应该被转义:
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();
}
我有一个像 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+\.", "");
两个问题:
。在第二个 replaceAll 应该被转义:
name=name.replaceAll("\.", "");
第三个中的^不应该被转义:
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();
}