去哪网第一题
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]