How add 0 in front of every single digit of a string?

最后都变了- 提交于 2020-01-15 20:10:34

问题


Given a string such as

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

I want to have an output of

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

Tried some regular expressions with no luck :/


回答1:


use this simple pattern

\b(\d)\b

and replace 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>



回答2:


You could try finding only numbers which are single digit ones. Then you can replace them with themselves preceded by zero. Your code can look like

text = text.replaceAll("(?<!\\d)\\d(?!\\d)", "0$0");

I used lookaroud mechanisms (?<!\\d) (?!\\d) to make sure that digit we find \d has no other digits before or after.
Replacement 0$0 contains 0 literal and $0 which is reference to group 0 - match found by our regex.

But if you are responsible for generating this text

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

from smaller parts September 3 September 3 September 2 September 1 September 10 August 14 then maybe consider using String formatter to create this parts with this additional 0 like

String part = String.format("%s %02d","September",3);
System.out.println(part); //September 03



回答3:


Hope below Snippet helps. This is a quick and dirty solution though :)

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


来源:https://stackoverflow.com/questions/32447546/how-add-0-in-front-of-every-single-digit-of-a-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!