Java:从字符串中删除数值

我已经在这个社区的帮助下取代了从用户输入中删除数值,但是,我的代码只会在删除数字之前检索字母字符:

import java.util.Scanner; public class Assignment2_A { public static void main(String[] args) { // TODO Auto-generated method stub Scanner firstname = new Scanner(System.in); System.out.println("Please enter your first name:"); String firstname1 = firstname.next(); firstname1 = firstname1.replaceAll("[^AZ]",""); System.out.println(firstname1); } } 

例如,如果用户输入= S1234am,我只会回来:S。如何检索字符串中的剩余字符?

您的正则表达式[^AZ]目前仅配置为保留大写字母。 您可以尝试用[^A-Za-z]替换它以保留小写字母。

这将删除所有数字:

 firstname1 = firstname1.replaceAll("\\d",""); 

您可以使用:

 firstname1 = firstname1.replaceAll("[0-9]",""); 

这将从String firstName1删除所有数值。

  String firstname1 = "S1234am"; firstname1 = firstname1.replaceAll("[0-9]",""); System.out.println(firstname1);//Prints Sam 

如何从字符串中删除数值:

要做到这一点就足够了

 str.replaceAll("[^A-Za-z]",""); 

但是如果你的字符串包含如下字符呢:

 String str = "stackoverflow elenasys +34668555555 # Пивоварова Пивоварова հայեր հայեր አማሪኮ አማሪኮ kiểm tra kiểmtra ตรวจสอบ ตรวจสอบ التحقق من التحقق من"; 

大多数字符也会被删除,所以这是一个更好的选择

 str = str.replaceAll("[\\d.]", ""); 

删除所有数值并得到结果:

 stackoverflow elenasys + # Пивоварова Пивоварова հայեր հայեր አማሪኮ አማሪኮ kiểm tra kiểmtra ตรวจสอบ ตรวจสอบ التحقق من التحقق من 

你的正则表达式:

 [^AZ] 

匹配任何不是大写字母的东西

这意味着任何小写字母也会匹配。

您应该使用:

 [^A-Za-z] 

作为正则表达式而不是。

另请注意,除了ASCII之外,这不会考虑任何其他因素。 它可能是,也可能不是你想要的。

 /*Remove numbers from given specific string*/ public class NewClass6 { public static void main(String[] args){ String s= "hello647hi74joke"; char[] ch=s.toCharArray(); System.out.println("Result = "+getString(ch)); } static String getString(char[] ch){ int m = 0; char[] chr=new char[50]; char[] k = {'0','1','2','3','4','5','6','7','8','9'}; for(int i = 0 ; i < ch.length ; i++){ for(int j = 0 ; j < k.length ; j++){ if(ch[i]==k[j]){ m--; break; }else{ chr[m]=ch[i]; } } m++; } String st = String.valueOf(chr); return st; } }