1

How can I get strings of corresponding placeholder according to format string?

For example:

The format string is My name is %s, and I'm %d years old, and I have a string My name is Mike, and I'm 18 years old。How to get Mike and 18 according to the format string, which correspond to placeholder %s and %d separately?

233
  • 77
  • 4

1 Answers1

1

I would use a regular expression with two groups. One to match any non-whitespace after My name is ending with a comma, the other to match any consecutive digits after I'm and ending in years old. Like,

String str = "My name is Mike, and I'm 18 years old";
Pattern p = Pattern.compile("My name is (\\S+), and I'm (\\d+) years old");
Matcher m = p.matcher(str);
if (m.find()) {
    System.out.printf("name=%s,age=%d%n", m.group(1), 
            Integer.parseInt(m.group(2)));
}

Which outputs

name=Mike,age=18
Elliott Frisch
  • 198,278
  • 20
  • 158
  • 249