I have a string that\'s like this: 1|\"value\"|;
I want to split that string and have chosen |
as the separator.
My code looks like
The parameter to split
method is a regex, as you can read here. Since |
has a special meaning in regular expressions, you need to escape it. The code then looks like this (as others have shown already):
String[] separated = line.split("\\|");
| means OR in regex, you should escape it. What's more, a single '\', you get '\|' means nothing in Java string. So you should also escape the '\' itself, which yields '\|'.
Good luck!
you can replace the pipe with another character like '#' before spliting, try this
String[] seperated = line.replace('|','#').split("#");
This is a generic method you can use for this purpose. It will handle any delimiter.
Pattern.quote does the magic.
import org.apache.commons.lang3.StringUtils;
public static String[] split(String strToSplit, String delimiter) {
if (StringUtils.isBlank(strToSplit)) {
return new String[] {};
} else if (StringUtils.isBlank(delimiter)) {
return new String[] { strToSplit };
}
return strToSplit.split(Pattern.quote(delimiter));
}
In your example:
String[] separated = split(line, "|");
Try this: String[] separated = line.split("\\|");
My answer is better. I corrected the spelling of "separated" :)
Also, the reason this works? |
means "OR" in regex. You need to escape it.
Escape the pipe. It works.
String.split("\\|");
The pipe is a special character in regex meaning OR