我想在映射程序中使用管道字符像number|twitter|abc..
这样的字符串分割文件。 这是一个很长的字符串。但它不承认竖线分隔符,当我做:Hadoop - 管道分隔符未被识别
String[] columnArray = line.split("|");
如果我尝试将其与像line.split(" ")
的空间分割,它工作得很好,所以我不认为这是它识别字符的问题。 还有其他可以看起来像管道的角色吗?为什么不分裂认出|
角色?
我想在映射程序中使用管道字符像number|twitter|abc..
这样的字符串分割文件。 这是一个很长的字符串。但它不承认竖线分隔符,当我做:Hadoop - 管道分隔符未被识别
String[] columnArray = line.split("|");
如果我尝试将其与像line.split(" ")
的空间分割,它工作得很好,所以我不认为这是它识别字符的问题。 还有其他可以看起来像管道的角色吗?为什么不分裂认出|
角色?
在另一个答案中共享 “String.split需要一个正则表达式参数,一个未转义|被解析为一个正则表达式,意思是”空字符串或空字符串“,这不是你的意思。 https://stackoverflow.com/a/9808719/2623158
下面是一个测试示例。
public class Test
{
public static void main(String[] args)
{
String str = "test|pipe|delimeter";
String [] tmpAr = str.split("\\|");
for(String s : tmpAr)
{
System.out.println(s);
}
}
}
String.split
需要正则表达式(作为javadoc状态),并且"|"
是正则表达式中的特殊字符。改为尝试"[|]"
。