验证并替换ID以匹配Java中的模式?

时间:2018-07-12 18:01:36

标签: java string-formatting

我有一个要求,即在开始时要获取一个字符串,该字符串可能包含也可能不包含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 个答案:

答案 0 :(得分:0)

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

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