如果有字符串 “我是{0},我来自{1},今年{2}岁。  请问怎样用String的内置方法用替换掉字符串的占位符:比如“我是中国人,我来自北京,今年22岁”。 谢谢各位。

解决方案 »

  1.   

    String str="我是{0},我来自{1},今年{2}岁";
       str = str.replace("{0}", "中国人");
       str = str.replace("{1}", "北京");
       str = str.replace("{2}", "22");
       System.out.println(str);
    不知道这么能满足要求不?
      

  2.   


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

  3.   

    JDK 中有正好有这功能:java.text.MessageFormat而 java.text.MessageFormat 正好用的是 {0}, {1} 这样,也正好是从 0 开始的,呵呵。String str = MessageFormat.format("我是{0},我来自{1},今年{2}岁", "中国人", "北京", "22");MessageFormat.format 方法从 JDK 5 开始支持变参,可以直接用逗号添加参数。
      

  4.   

    这个东东不错 java.text.MessageFormat 
      

  5.   

    没白来的说!系统api也好,自己实现也好,都不错个人喜欢正则~
      

  6.   

    你说的占位符是不是指这个?
    System.out.printf("我是%s,我来自%s,今年%d岁", "中国人","北京",22);
      

  7.   

    怎么没人用String.format();  String str = String.format("我是%s","中国人");
    system.out.print(str);
      

  8.   

    原来还有这么多好方法啊!看来我out了!