Cas*_*per 13 java regex string split
我从网上得到一个字符串,如下所示:
Latest Episode@04x22^Killing Your Number^May/15/2009
Run Code Online (Sandbox Code Playgroud)
然后我需要存储04x22,Killing Your Number并May/15/2009在不同的变量,但它将无法工作.
String[] all = inputLine.split("@");
String[] need = all[1].split("^");
show.setNextNr(need[0]);
show.setNextTitle(need[1]);
show.setNextDate(need[2]);
Run Code Online (Sandbox Code Playgroud)
现在它只存储NextNr整个字符串
04x22^Killing Your Number^May/15/2009
Run Code Online (Sandbox Code Playgroud)
怎么了?
Bri*_*ach 32
String.split(String regex)
论证是一种规范的表达,^在那里具有特殊的意义; "锚定到开始"
你需要这样做:
String[] need = all[1].split("\\^");
通过逃避^你说"我的意思是字符'^'"
Pet*_*rey 22
如果您有分隔符但不知道它是否包含特殊字符,则可以使用以下方法
String[] parts = Pattern.compile(separator, Pattern.LITERAL).split(text);
Run Code Online (Sandbox Code Playgroud)
使用番石榴,你可以优雅而快速地做到:
private static final Splitter RECORD_SPLITTER = Splitter.on(CharMatcher.anyOf("@^")).trimResults().omitEmptyStrings();
...
Iterator<String> splitLine = Iterables.skip(RECORD_SPLITTER.split(inputLine), 1).iterator();
show.setNextNr(splitLine.next());
show.setNextTitle(splitLine.next());
show.setNextDate(splitLine.next());
Run Code Online (Sandbox Code Playgroud)