说我有以下字符串str
:
GTM =0.2
Test =100
[DLM]
ABCDEF =5
(是的,它包含换行符)我试图用这样的[DLM]
分隔符子串分割:
String[] strArr = str.split("[DLM]");
为什么我这样做:
System.out.print(strArr[0]);
我得到了这个输出:GT
当我做的时候
System.out.print(strArr[1]);
我得到=0.2
这根本没有意义吗?
答案 0 :(得分:5)
str.split("[DLM]");
应为str.split("\\[DLM\\]");
为什么?
[
和]
为special characters,String#split
接受正则表达式。
我更喜欢的解决方案是使用Pattern#quote
:
str.split(Pattern.quote("[DLM]"));
quote
返回给定正则表达式的 String 表示。
答案 1 :(得分:1)
是的,你给的正则表达式是“用D,或L或M分开”。
你应该逃避这样的男孩:str.split(“\ [DLM \]”);
它在第一个M分裂。
答案 2 :(得分:1)
转动括号
("\\[DLM\\]")
当您在“”中使用括号时,它会将其读取为,括号内的每个字符都是分隔符。所以在你的情况下,M
是一个分隔符
答案 3 :(得分:1)
使用
String[] strArr = str.split("\\[DLM]\\");
而不是
String[] strArr = str.split("[DLM]");
另外,它会与D,或L或M分开。