【问题标题】:Java: removing numeric values from stringJava:从字符串中删除数值
【发布时间】:2013-07-05 03:50:58
【问题描述】:

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

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。如何检索字符串中的剩余字符?

【问题讨论】:

  • 你也需要替换小写字母

标签: java string removeall


【解决方案1】:

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

【讨论】:

  • 确实如此。如果目标真的是删除所有数字,那么使用\\d 会更好,但它目前的设计方式表明目标可能只是保留A-Za-z
  • 吉安,感谢您的帮助。我会给你一个大拇指,但显然我在这个网站上太新了,不能这样做。感谢您的宝贵时间!
【解决方案2】:

这将删除所有数字:

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

【讨论】:

    【解决方案3】:

    你的正则表达式:

    [^A-Z]
    

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

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

    您可能应该使用:

    [^A-Za-z]
    

    改为正则表达式。

    还请注意,这不会解释 ASCII 以外的任何内容。它可能是你想要的,也可能不是。

    【讨论】:

    • 感谢您的宝贵时间和专业知识!
    【解决方案4】:

    你可以使用:

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

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

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

    【讨论】:

    • 这个答案与问题更相关,因为使用 [^A-Za-z] 还会删除空格和除数值之外的任何其他值。
    • 我认为这是最好的答案。上面的其他(一些)还可以,保存-1,但这个是最好的,IMO,因为它简短、简洁、清晰,而且很中肯。指定的范围 0-9 也是其他语言通常使用的范围。
    【解决方案5】:

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

    这样做就足够了

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

    【讨论】:

      【解决方案6】:
      /*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;
           }
      }
      

      【讨论】:

      • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。一个适当的解释将通过展示为什么这是解决问题的好方法来极大地提高其长期价值,并使其对有其他类似问题的未来读者更有用。请编辑您的答案以添加一些解释,包括您所做的假设。
      【解决方案7】:
      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);
      
      
      
      }
      

      【讨论】:

        猜你喜欢
        • 2017-05-21
        • 2011-05-08
        • 1970-01-01
        • 2011-10-11
        • 2015-05-13
        • 2011-08-07
        • 2010-10-10
        • 1970-01-01
        相关资源
        最近更新 更多