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