modsiw
asked on
String Split() method and pipes
I'm lost for trying to explain this:
public class wtf
{
public static void main(String[] args)
{
String str = "abcdef";
String[] ary = str.split("|");
System.out.println(ary.len gth);
for(int i = 0; i < ary.length; i++)
System.out.println(ary[i]) ;
}
/*The output of this program is:
7
a
b
c
d
e
f
*/
}
Basicly I have a Vector of pipe delimited strings that I need to turn into a Vector of String arrays (broken at the pipes).
public class wtf
{
public static void main(String[] args)
{
String str = "abcdef";
String[] ary = str.split("|");
System.out.println(ary.len
for(int i = 0; i < ary.length; i++)
System.out.println(ary[i])
}
/*The output of this program is:
7
a
b
c
d
e
f
*/
}
Basicly I have a Vector of pipe delimited strings that I need to turn into a Vector of String arrays (broken at the pipes).
| is a logical or operator in a reqexp, you need to escape it to use as seperator
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
thanks
no worries :)
The split may not work if the excape is used for delimiters. Thus the split doesn't work generacally for any delimiter. On can try out this mthod.
public static String[] split(String inputString, String splitter)
{
List outputList = new ArrayList();
if(inputString == null || splitter == null){
String[] output = (String[])outputList.toArr ay();
return output;
}
//if the value doesn't end with the delimiter then added is as we need to get the last value
int idx = inputString.indexOf(splitt er);
if(!inputString.trim().end sWith(spli tter))
inputString = inputString+splitter;
while(idx != -1){
String value = inputString.substring(0, idx);
outputList.add(value);
int next = idx+splitter.length();
inputString = inputString.substring(next );
idx = inputString.indexOf(splitt er);
}
Object[] objectArray = new String[outputList.size()];
outputList.toArray(objectA rray);
String[] output = (String[]) objectArray;
return output;
}
public static String[] split(String inputString, String splitter)
{
List outputList = new ArrayList();
if(inputString == null || splitter == null){
String[] output = (String[])outputList.toArr
return output;
}
//if the value doesn't end with the delimiter then added is as we need to get the last value
int idx = inputString.indexOf(splitt
if(!inputString.trim().end
inputString = inputString+splitter;
while(idx != -1){
String value = inputString.substring(0, idx);
outputList.add(value);
int next = idx+splitter.length();
inputString = inputString.substring(next
idx = inputString.indexOf(splitt
}
Object[] objectArray = new String[outputList.size()];
outputList.toArray(objectA
String[] output = (String[]) objectArray;
return output;
}