Java:从字符串中删除数字值

30

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

import java.util.Scanner;

public class Assignment2_A {

    public static void main(String[] args) {
        Scanner firstname = new Scanner(System.in);
        String firstname1 = firstname.next();
        firstname1 = firstname1.replaceAll("[^A-Z]","");
        System.out.println(firstname1);
    }
}
例如,如果用户输入为S1234am,则我只会得到:S。如何检索字符串中剩余的字符?

1
你需要替换小写字母 - user2558576
7个回答

65

这将删除所有数字:

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

26

您可以使用:

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

这将从字符串firstName1中删除所有数字值。

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

这个答案更贴切于问题,因为使用[^A-Za-z]将同时删除空格和除数字值之外的任何其他值。 - Milan Kumar
我认为这是最好的答案。虽然上面的其他回答都还不错(除了-1),但我认为这个最好,因为它简短、精练、清晰并且非常切合要点。指定的0-9范围也是其他语言通常使用的。 - shevy

20

你的正则表达式 [^A-Z] 目前只保留大写字母。你可以尝试将其替换为 [^A-Za-z],以保留小写字母。


1
确实。如果目标是真的要删除所有数字,那么使用\\d会更好,但当前设计的方式表明目标可能只是保留A-Za-z - Gian
Gian,感谢您的帮助。我想给您点赞,但显然我在这个网站上还太新了,无法这样做。非常感谢您的时间! - user2558595

7

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

要做到这一点,只需要

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 ตรวจสอบ ตรวจสอบ التحقق من التحقق من

1
你的正则表达式:
[^A-Z]

匹配任何不是大写字母的内容。

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

你应该使用:

[^A-Za-z]

作为正则表达式使用。请注意,这不会考虑除ASCII以外的任何内容。它可能是你想要的,也可能不是。

0
public static void main(String[] args) {
    String address = "34732483dhshdsdhajsa8ejdsdd";
    char[] chars = address.toCharArray();
    String aString = "";

    for (int i = 0; i < chars.length; i++) {
        if (!Character.isDigit(chars[i])) {
            aString =aString + chars[i]; 


        }

    }System.out.println(aString);



}

-1
/*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;
     }
}

感谢您提供这段代码片段,这可能会提供一些有限的、即时的帮助。通过展示为什么这是一个好的解决方案,适当的解释将极大地提高它的长期价值,并使其对未来遇到类似问题的读者更有用。请编辑您的答案,添加一些解释,包括您所做的假设。 - NOhs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接