首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么String.split需要转义管道分隔符?

为什么String.split需要转义管道分隔符?
EN

Stack Overflow用户
提问于 2012-03-22 00:21:40
回答 3查看 94.1K关注 0票数 141

我正在尝试解析一个文件,该文件的每一行都有竖线分隔值。当我没有在split方法中转义管道分隔符时,它不能正常工作,但在我转义管道后,它可以正常工作,如下所示。

代码语言:javascript
复制
private ArrayList<String> parseLine(String line) {
    ArrayList<String> list = new ArrayList<String>();
    String[] list_str = line.split("\\|"); // note the escape "\\" here
    System.out.println(list_str.length);
    System.out.println(line);
    for(String s:list_str) {
        list.add(s);
        System.out.print(s+ "|");
    }
    return list;
}

有人能解释一下为什么split()方法需要对管道字符进行转义吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-22 00:23:11

String.split需要正则表达式参数。未转义的|被解析为正则表达式,意思是“空字符串或空字符串”,这不是您想要的意思。

票数 176
EN

Stack Overflow用户

发布于 2012-03-22 00:22:37

因为split参数的语法是正则表达式,其中在'|'中有OR的特殊含义,而'\|'表示文字'|',因此字符串"\\|"表示正则表达式'\|',这意味着精确匹配字符'|'

票数 76
EN

Stack Overflow用户

发布于 2015-12-07 18:53:28

您可以简单地执行以下操作:

代码语言:javascript
复制
String[] arrayString = yourString.split("\\|");
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9808689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档