去哪网第一题

 1 package test;
 2 
 3 public class Qunaer01 {
 4 
 5     
 6     public static void substitute(String template,String []args){
 7         
 8         String str = template;
 9         StringBuilder  sB = new StringBuilder();
10         int flag = 0; //记录是否是第一次%s匹配不成功
11         
12         for(int i=0;i<args.length;i++){
13             
14             if(str.contains("%s")){
15                 
16                 //判断数组中元素是否为null,replaceFirst方法中replacement不能为null,若为null,
                  将其替换为字符串"null"
17 if(args[i]==null){ 18 str = str.replaceFirst("%s", "null"); 19 }else{ 20 str = str.replaceFirst("%s", args[i]); 21 } 22 23 }else if(!str.contains("%s")&&flag==0){ 24 //判断是否是非匹配情况出现的第一次 25 26 if(args.length - i > 1){ 27 28 sB.append(str).append("[").append(args[i]); 29 }else{ 30 sB.append(str).append(" ").append(args[i]); 31 } 32 flag += 1; 33 }else if(!str.contains("%s")&&flag!=0){ 34 //判断是否是最后一个元素 35 36 if(args.length == i+1){ 37 sB.append(",").append(args[i]).append("]"); 38 }else{ 39 sB.append(",").append(args[i]); 40 } 41 } 42 } 43 System.out.println(sB.toString()); 44 } 45 46 47 public static void main(String[] args) { 48 49 substitute("a:%s,b:%s,c:%s", new String[]{"a","b","c","d",null}); 50 } 51 }
a:a,b:b,c:c[d,null]

第二种方法,利用String.formate方法

 1 package test;
 2 
 3 public class Qunaer001 {
 4 
 5 public static void substitute(String template,String []args){
 6         
 7         /*
 8          * http://www.cnblogs.com/happyday56/p/3996498.html
 9          * %s 字符串类型
10          * 利用String.formate方法
11          * Parameters:
12          * format - A format string
13          * args - Arguments referenced by the format specifiers in the format 
14          * string. If there are more arguments than format specifiers, 
15          * the extra arguments are ignored. The number of arguments is 
16          * variable and may be zero. The maximum number of arguments is 
17          * limited by the maximum dimension of a Java array as defined 
18          * by The Java™ Virtual Machine Specification. The behaviour on 
19          * a null argument depends on the conversion.
20          * Returns:
21          *     A formatted string
22          * */
23         String str = template.format(template, args);
24         String []split = str.split(",");
25         StringBuilder  sB = new StringBuilder();
26         int flag = 0; //记录是否是第一次超出匹配数组部分
27         System.out.println(str);
28         
29         for(int i=split.length;i<args.length;i++){
30             
31             if(flag==0){
32                 //判断是否是非匹配情况出现的第一次
33                 
34                 if(args.length - i > 1){
35                     
36                     sB.append(str).append("[").append(args[i]);
37                 }else{
38                     sB.append(str).append(" ").append(args[i]);
39                 }
40                 flag += 1;
41             }else{
42                 //判断是否是最后一个元素
43                 
44                 if(args.length == i+1){
45                     sB.append(",").append(args[i]).append("]");
46                 }else{
47                     sB.append(",").append(args[i]);
48                 }
49             }
50         }
51         System.out.println(sB.toString());
52     }
53     
54     
55     public static void main(String[] args) {
56         
57         substitute("a:%s,b:%s,c:%s", new String[]{"a","b","c","d",null});
58 
59     }
60 }
a:a,b:b,c:c
a:a,b:b,c:c[d,null]

 

posted on 2015-09-10 22:46  TGomving  阅读(121)  评论(0编辑  收藏  举报