And*_*con 15 java string split
为什么在下面,输出是[]和不是[1]?
String input="1|2|3";
String[] values= input.split("|");
System.out.println("[" + values[0] + "]");
// Output: []
Run Code Online (Sandbox Code Playgroud)
但是,如果我们更改分隔符,则输出为[1].
String input="1;2;3";
String[] values= input.split(";");
System.out.println("[" + values[0] + "]");
// Output: [1]
Run Code Online (Sandbox Code Playgroud)
use*_*ser 24
试着逃避那个角色:
String input="1|2|3";
String[] values= input.split("\\|");
System.out.println("[" + values[0] + "]");
Run Code Online (Sandbox Code Playgroud)
Mik*_*scu 15
因为|正则表达式具有特殊含义.你需要像这样逃避它:\|在Java中你也必须逃避反斜杠,所以你最终得到了\\|
管道字符是一个析取运算符,这意味着它告诉正则表达式引擎在其左侧和右侧选择任一模式.在你的情况下那些空字符串匹配任何东西.
该split方法接收正则表达式作为参数.管道是一个具有自己目的的保留字符(意思是or).
你可以逃避它("\\|"),或者,如果你是Java 1.5+,你可以Pattern.quote("|")像这样使用:
input.split(Pattern.quote("|"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1613 次 |
| 最近记录: |