JAVA字符串占位符替换
JAVA字符串占位符替换
如果有字符串 “我是{0},我来自{1},今年{2}岁。 请问怎样用String的内置方法用替换掉字符串的占位符:比如“我是中国人,我来自北京,今年22岁”。
(1)JDK 中有正好有这功能:java.text.MessageFormat 而 java.text.MessageFormat 正好用的是 {0}, {1},所以String str = MessageFormat.format("我是{0},我来自{1},今年{2}岁", "中国人", "北京", "22"); MessageFormat.format 方法从 JDK 5 开始支持变参,可以直接用逗号添加参数。
(2)String str="我是{0},我来自{1},今年{2}岁"; str = str.replace("{0}", "中国人"); str = str.replace("{1}", "北京"); str = str.replace("{2}", "22"); System.out.println(str); (3) public static void main(String[] args){ String str="我是{0},我来自{1},今年{2}岁"; String[] arr={"中国人","北京","22"}; System.out.println(fillStringByArgs(str, arr)); } private static String fillStringByArgs(String str,String[] arr){ Matcher m=Pattern.compile("\{(\d)\}").matcher(str); while(m.find()){ str=str.replace(m.group(),arr[Integer.parseInt(m.group(1))]); } return str; }
如果有字符串 “我是{0},我来自{1},今年{2}岁。 请问怎样用String的内置方法用替换掉字符串的占位符:比如“我是中国人,我来自北京,今年22岁”。 (1)JDK 中有正好有这功能:java.text.MessageFormat 而 java.text.MessageFormat 正好用的是 {0}, {1},所以String str = MessageFormat.format("我是{0},我来自{1},今年{2}岁", "中国人", "北京", "22"); MessageFormat.format 方法从 JDK 5 开始支持变参,可以直接用逗号添加参数。 (2)String str="我是{0},我来自{1},今年{2}岁"; str = str.replace("{0}", "中国人"); str = str.replace("{1}", "北京"); str = str.replace("{2}", "22"); System.out.println(str); (3) public static void main(String[] args){ String str="我是{0},我来自{1},今年{2}岁"; String[] arr={"中国人","北京","22"}; System.out.println(fillStringByArgs(str, arr)); } private static String fillStringByArgs(String str,String[] arr){ Matcher m=Pattern.compile("\{(\d)\}").matcher(str); while(m.find()){ str=str.replace(m.group(),arr[Integer.parseInt(m.group(1))]); } return str; }