拆分后,字符串变为空白

时间:2014-04-01 09:32:44

标签: java string parsing split

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:xy | t”的格式。问题是当字符串location从字符串data中分离时,它是空白的。为什么呢?

2 个答案:

答案 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 |"); 
 }