Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串在拆分时变为空白_Java_String_Parsing_Split - Fatal编程技术网

Java 字符串在拆分时变为空白

Java 字符串在拆分时变为空白,java,string,parsing,split,Java,String,Parsing,Split,输入到此解析器的原始字符串的格式类似于“DATA:3,3 | 1”。我试图将其解析为“数据:x,y|t”的格式。问题是当字符串位置与字符串数据分离时,它是空的。为什么?因为split()接受一个正则表达式作为参数,|实际上是一个正则表达式特殊字符(也是一个语法有效的正则表达式,它解释了不会引发错误) 您需要转义它:sp00m说您可以使用split(\\\\;”),或者split([\\;]): split(“\\\\\”)或split([\\]]) 或者你可以使用 String data = l

输入到此解析器的原始字符串的格式类似于“DATA:3,3 | 1”。我试图将其解析为“数据:
x
y
|
t
”的格式。问题是当字符串
位置
与字符串
数据
分离时,它是空的。为什么?

因为
split()
接受一个正则表达式作为参数,
|
实际上是一个正则表达式特殊字符(也是一个语法有效的正则表达式,它解释了不会引发错误)


您需要转义它:sp00m说您可以使用
split(\\\\;”)
,或者
split([\\;])

split(“\\\\\”)
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);
要预先测试字符串是否包含字符,只需使用

字符串#contains()

split(Pattern.quote("|"));
if (string.contains("\\|")) { 
    // Split it. 
} 
else {
  throw new IllegalArgumentException("String " + string + " does not contain |"); 
 }