JAVA字符串占位符替换

JAVA字符串占位符替换  

 ---------------------------------------------------------------
  public static void method1(){
    String domain = "www.ykmaiz.com";//定义第一个值
    int iVisit = 0;//定义第二个值
    System.out.println(String.format("该域名%s被访问了 %s 次.", domain, iVisit));//在控制台输出
    }
    public static void method2(){
String[] strs = {"张三","男","30"};
String pattern = "性别是{1},我叫{0},年龄是{2}岁";
String format = MessageFormat.format(pattern, strs);
System.out.println(format);
        }
------------------------------------------

如果有字符串 “我是{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;
    }

猜你喜欢

转载自nethub2.iteye.com/blog/2231629