我试图在java中使用Split函数拆分字符串
String empName="employee name | employee Email";
String[] empDetails=empName.split("|");
Run Code Online (Sandbox Code Playgroud)
它给了我结果
empDetails[0]="e";
empDetails[1]="m";
empDetails[2]="p";
empDetails[3]="l";
empDetails[4]="o";
empDetails[5]="y";
empDetails[6]="e";
empDetails[7]="e";
.
.
.
Run Code Online (Sandbox Code Playgroud)
但是当我尝试遵循代码时
String empName="employee name - employee Email";
String[] empDetails=empName.split("-");
Run Code Online (Sandbox Code Playgroud)
它给了我
empDetails[0]="employee name ";
empDetails[1]=" employee Email";
Run Code Online (Sandbox Code Playgroud)
为什么java split函数不能拆分由"|"分隔的字符串
Sur*_*tta 13
String#split()方法接受a regex而不是a String.
因为| 是一个元字符,它在正则表达式中具有特殊含义.
当你逃避它时它会起作用.
String[] empDetails=empName.split("\\|");
Run Code Online (Sandbox Code Playgroud)
更新:
作为旁注:
在java方法名称中以小写字母开头.它应该split()不是...不是Split()大写字母s
但我的问题是为什么我们必须在"|"的情况下使用转义 而不是" - "
因为"|"是一个正则表达式的元字符.这意味着"交替"; 例如"A|B"意味着匹配"A"或"B".如果您在理解PatternJava正则表达式时遇到问题,那么javadocs将描述完整的Java正则表达式语法.
因此,当您拆分"|"(没有转义!)时,您指定分隔符为"无或无",并且在目标字符串的每个字符之间匹配.
(对于记录,"-"也是元字符,但仅限于"[..]"字符组.在其他情况下,它不需要转义.)
| 归档时间: |
|
| 查看次数: |
3482 次 |
| 最近记录: |