String data = line.split(":")[1];
String location = data.split("|")[0];
String type = data.split("|")[1];
System.out.println("D: " + type);
int x = Integer.parseInt(location.split("-")[0]);
int y = Integer.parseInt(location.split("-")[1]);
int t = Integer.parseInt(type);
输入此解析器的原始字符串格式为“DATA:3,3 | 1”。我正在尝试将其解析为“DATA:x
,y
| t
”的格式。问题是当字符串location
从字符串data
中分离时,它是空白的。为什么呢?
答案 0 :(得分:8)
因为split()
使用正则表达式作为参数,而|
实际上是一个正则表达式特殊字符(也是一个语法上有效的正则表达式,这解释了没有引发错误)。
您需要将其转义:split("\\|")
或split("[|]")
。
答案 1 :(得分:0)
sp00m说你可以使用:
split("\\|")
或split("[|]")
或者您可以使用
split(Pattern.quote("|"));
要预先测试字符串是否包含字符,只需使用
字符串#含有()
if (string.contains("\\|")) {
// Split it.
}
else {
throw new IllegalArgumentException("String " + string + " does not contain |");
}