*/\r
\r
public class Split {\r
- public static String[] split(char c, String value) {\r
- // Count items to preallocate Array (memory alloc is more expensive than counting twice)\r
- int count,idx;\r
- for(count=1,idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,++idx),++count);\r
- String[] rv = new String[count];\r
- if(count==1) {\r
- rv[0]=value;\r
- } else {\r
- int last=0;\r
- count=-1;\r
- for(idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,idx)) {\r
- rv[++count]=value.substring(last,idx);\r
- last = ++idx;\r
- }\r
- rv[++count]=value.substring(last);\r
- }\r
- return rv;\r
- }\r
+ private static final String[] BLANK = new String[0];\r
+ \r
+ public static String[] split(char c, String value) {\r
+ if(value==null) {\r
+ return BLANK;\r
+ }\r
\r
- public static String[] splitTrim(char c, String value) {\r
- // Count items to preallocate Array (memory alloc is more expensive than counting twice)\r
- int count,idx;\r
- for(count=1,idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,++idx),++count);\r
- String[] rv = new String[count];\r
- if(count==1) {\r
- rv[0]=value.trim();\r
- } else {\r
- int last=0;\r
- count=-1;\r
- for(idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,idx)) {\r
- rv[++count]=value.substring(last,idx).trim();\r
- last = ++idx;\r
- }\r
- rv[++count]=value.substring(last).trim();\r
- }\r
- return rv;\r
- }\r
+ // Count items to preallocate Array (memory alloc is more expensive than counting twice)\r
+ int count,idx;\r
+ for(count=1,idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,++idx),++count);\r
+ String[] rv = new String[count];\r
+ if(count==1) {\r
+ rv[0]=value;\r
+ } else {\r
+ int last=0;\r
+ count=-1;\r
+ for(idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,idx)) {\r
+ rv[++count]=value.substring(last,idx);\r
+ last = ++idx;\r
+ }\r
+ rv[++count]=value.substring(last);\r
+ }\r
+ return rv;\r
+ }\r
\r
- public static String[] splitTrim(char c, String value, int size) {\r
- int idx;\r
- String[] rv = new String[size];\r
- if(size==1) {\r
- rv[0]=value.trim();\r
- } else {\r
- int last=0;\r
- int count=-1;\r
- size-=2;\r
- for(idx=value.indexOf(c);idx>=0 && count<size;idx=value.indexOf(c,idx)) {\r
- rv[++count]=value.substring(last,idx).trim();\r
- last = ++idx;\r
- }\r
- rv[++count]=value.substring(last).trim();\r
- }\r
- return rv;\r
- }\r
+ public static String[] splitTrim(char c, String value) {\r
+ if(value==null) {\r
+ return BLANK;\r
+ }\r
+ // Count items to preallocate Array (memory alloc is more expensive than counting twice)\r
+ int count,idx;\r
+ for(count=1,idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,++idx),++count);\r
+ String[] rv = new String[count];\r
+ if(count==1) {\r
+ rv[0]=value.trim();\r
+ } else {\r
+ int last=0;\r
+ count=-1;\r
+ for(idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,idx)) {\r
+ rv[++count]=value.substring(last,idx).trim();\r
+ last = ++idx;\r
+ }\r
+ rv[++count]=value.substring(last).trim();\r
+ }\r
+ return rv;\r
+ }\r
+\r
+ public static String[] splitTrim(char c, String value, int size) {\r
+ if(value==null) {\r
+ return BLANK;\r
+ }\r
+\r
+ int idx;\r
+ String[] rv = new String[size];\r
+ if(size==1) {\r
+ rv[0]=value.trim();\r
+ } else {\r
+ int last=0;\r
+ int count=-1;\r
+ size-=2;\r
+ for(idx=value.indexOf(c);idx>=0 && count<size;idx=value.indexOf(c,idx)) {\r
+ rv[++count]=value.substring(last,idx).trim();\r
+ last = ++idx;\r
+ }\r
+ rv[++count]=value.substring(last).trim();\r
+ }\r
+ return rv;\r
+ }\r
\r
}\r