如何在字符串的每个数字前添加0?

时间:2015-09-08 00:23:40

标签: java regex string replace digits

给出一个字符串,如

September 3  September 3  September 2  September 1 September 10 August 14

我希望输出

September 03  September 03  September 02  September 01 September 10 August 14

尝试了一些没有运气的正则表达式:/

3 个答案:

答案 0 :(得分:2)

使用这个简单的模式

\b(\d)\b

并替换w /

0$1

Demo

#    \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));