【问题标题】:Trimming digits at the end of String修剪字符串末尾的数字
【发布时间】:2013-07-23 11:32:11
【问题描述】:

我想从字符串中删除最后出现的数字字符 例如:

  • "abc123" => "abc"
  • "abc12xyz34" => "abc12xyz"

写在sn-p下面来提取它。只是想探索这是否可以通过正则表达式完成

private static  String getNumericTrimmedString(String s)
{

    for(int i = s.length()-1; i >=0 ; i--){
        final char c = s.charAt(i);
        if(!(c > 47 && c < 58)){
            return s.substring(0,i+1);
        }
    }
    return "";
}

问候, 卤水

【问题讨论】:

  • 是的,这是可能的,我认为将字符串逐个字符保存在一个数组中,并且检查该字符是一个数字,而下一个正则表达式 //d 证明该字符是一个数字,然后当你有位置做子串。

标签: java regex string trim


【解决方案1】:

您可以使用以下正则表达式:

private static String getNumericTrimmedString(String s) {
    return s.replaceAll("\\d+$", "");
}

\\d+ 查找一位或多位数字
$ 是字符串的结尾

【讨论】:

  • 酷 :) 单排...谢谢 :)
【解决方案2】:

是的,可以做到:

String s = "abc12xyz34";
System.out.println( s.replaceAll("\\d+$", "" ) );

正则表达式的解释:

  • \d+ 匹配至少一位数字的序列
  • $ 匹配输入的结尾

因此,您将字符串末尾的任何数字替换为空字符串,从而有效地删除它们。

【讨论】:

    【解决方案3】:

    怎么样:

    s = s.replaceAll("\\d*$","");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 2012-02-23
      • 2021-09-16
      相关资源
      最近更新 更多