[AAF-21] Initial code import
[aaf/cadi.git] / core / src / main / java / com / att / cadi / util / Split.java
1 /*******************************************************************************\r
2  * ============LICENSE_START====================================================\r
3  * * org.onap.aai\r
4  * * ===========================================================================\r
5  * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
6  * * Copyright © 2017 Amdocs\r
7  * * ===========================================================================\r
8  * * Licensed under the Apache License, Version 2.0 (the "License");\r
9  * * you may not use this file except in compliance with the License.\r
10  * * You may obtain a copy of the License at\r
11  * * \r
12  *  *      http://www.apache.org/licenses/LICENSE-2.0\r
13  * * \r
14  *  * Unless required by applicable law or agreed to in writing, software\r
15  * * distributed under the License is distributed on an "AS IS" BASIS,\r
16  * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17  * * See the License for the specific language governing permissions and\r
18  * * limitations under the License.\r
19  * * ============LICENSE_END====================================================\r
20  * *\r
21  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
22  * *\r
23  ******************************************************************************/\r
24 package com.att.cadi.util;\r
25 \r
26 /**\r
27  * Split by Char, optional Trim\r
28  *\r
29  * Note: Copied from Inno to avoid linking issues.\r
30  * Note: I read the String split and Pattern split code, and we can do this more efficiently for a single Character\r
31  * \r
32  * 8/20/2015\r
33  */\r
34 \r
35 public class Split {\r
36           public static String[] split(char c, String value) {\r
37                   // Count items to preallocate Array (memory alloc is more expensive than counting twice)\r
38                   int count,idx;\r
39                   for(count=1,idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,++idx),++count);\r
40                   String[] rv = new String[count];\r
41                   if(count==1) {\r
42                           rv[0]=value;\r
43                   } else {\r
44                           int last=0;\r
45                           count=-1;\r
46                           for(idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,idx)) {\r
47                                   rv[++count]=value.substring(last,idx);\r
48                                   last = ++idx;\r
49                           }\r
50                           rv[++count]=value.substring(last);\r
51                   }\r
52                   return rv;\r
53           }\r
54 \r
55           public static String[] splitTrim(char c, String value) {\r
56                   // Count items to preallocate Array (memory alloc is more expensive than counting twice)\r
57                   int count,idx;\r
58                   for(count=1,idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,++idx),++count);\r
59                   String[] rv = new String[count];\r
60                   if(count==1) {\r
61                           rv[0]=value.trim();\r
62                   } else {\r
63                           int last=0;\r
64                           count=-1;\r
65                           for(idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,idx)) {\r
66                                   rv[++count]=value.substring(last,idx).trim();\r
67                                   last = ++idx;\r
68                           }\r
69                           rv[++count]=value.substring(last).trim();\r
70                   }\r
71                   return rv;\r
72           }\r
73 \r
74           public static String[] splitTrim(char c, String value, int size) {\r
75                   int idx;\r
76                   String[] rv = new String[size];\r
77                   if(size==1) {\r
78                           rv[0]=value.trim();\r
79                   } else {\r
80                           int last=0;\r
81                           int count=-1;\r
82                           size-=2;\r
83                           for(idx=value.indexOf(c);idx>=0 && count<size;idx=value.indexOf(c,idx)) {\r
84                                   rv[++count]=value.substring(last,idx).trim();\r
85                                   last = ++idx;\r
86                           }\r
87                           rv[++count]=value.substring(last).trim();\r
88                   }\r
89                   return rv;\r
90           }\r
91 \r
92 }\r