给出一个字符串,如
September 3 September 3 September 2 September 1 September 10 August 14
我希望输出
September 03 September 03 September 02 September 01 September 10 August 14
尝试了一些没有运气的正则表达式:/
答案 0 :(得分:2)
使用这个简单的模式
\b(\d)\b
并替换w /
0$1
# \b(\d)\b
\b # <word boundary>
( # Capturing Group (1)
\d # <digit 0-9>
) # End of Capturing Group (1)
\b # <word boundary>
答案 1 :(得分:0)
您可以尝试仅查找单位数的数字。然后你可以用自己替换它们之前的零。您的代码可能看起来像
text = text.replaceAll("(?<!\\d)\\d(?!\\d)", "0$0");
我使用lookaroud机制(?<!\\d)
(?!\\d)
来确保我们找到的数字\d
之前或之后没有其他数字。
替换0$0
包含0
文字和$0
,它引用了第0组 - 我们的正则表达式找到的匹配。
但是如果你负责生成这个文本
September 3 September 3 September 2 September 1 September 10 August 14
来自较小的部分September 3
September 3
September 2
September 1
September 10
August 14
然后可以考虑使用String formatter创建此部分这个额外的0
喜欢
String part = String.format("%s %02d","September",3);
System.out.println(part); //September 03
答案 2 :(得分:0)
希望在Snippet下面有所帮助。这是一个快速而肮脏的解决方案,但是:)
String currentDate = "September 3";
String month = "", date = "";
String tokens[] = currentDate.split(" ");
StringTokenizer st = new StringTokenizer(currentDate);
int count = 0;
while (st.hasMoreTokens()) {
if (count == 0) {
month = st.nextToken();
count++;
} else if (count == 1) {
date = st.nextToken();
date = String.format("%2s", date).replace(' ', '0'); //Add zero before the string , if its not 2 digit
}
}
System.out.println("Formatted Date is :- "
+ month.concat(" ").concat(date));