代码之家  ›  专栏  ›  技术社区  ›  Phoenix_uy

验证并替换id以匹配java中的模式?

  •  0
  • Phoenix_uy  · 技术社区  · 6 年前

    我有一个要求,我得到的字符串可能包含也可能不包含 s 在开头,然后是从1到5位的数字。现在,这个字符串需要像 S公司 以及5位数字(不能包含其他字母),如下所示:

    s1 -> s00001 s12 -> s00012 s123 -> s00123 s1234 -> s01234 s12345 -> s12345 因为s可能会出现,也可能不会出现,所以在添加前导零之前,我也需要检查一下。 这就是我目前所得到的结果,但是否有更好的解决方案(可能是通过常规的表达式)?

    private String formatStoreNumber(String storeNumber) {
            if(storeNumber.contains("s")) {
                storeNumber = storeNumber.replace("s", "");
            }
            storeNumber = StringUtils.leftPad(storeNumber, 5, '0');
            storeNumber = "s" + storeNumber;
            return storeNumber;
        }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Amit Bera    6 年前

    您可以尝试以下解决方案:

    private static String formatStoreNumber(String storeNumber) {
        String strWithoutS = storeNumber.replaceAll("S", "");
        String result = "S" + ("00000" + strWithoutS).substring(strWithoutS.length());
        return result;
    }
    

    以下是输入和各自的输出:

    Input : S14666|  Output : S14666
    Input : 1     |  Output : S00001
    Input : 12    |  Output : S00012
    Input : 123   |  Output : S00123
    Input : 1234  |  Output : S01234
    Input : 12345 |  Output : S12345