[英]Java Splitting Strings
我有一个字符串s,我想拆分成每个部分,并用“ |”分隔 symbol成为字符串数组的元素。
这就是我要这样做的方式吗?
String s = "FirstName1 LastName1|FirstName2 LastName2|FirstName3 LastName4|";
String [] names = s.split("|");
然后,我想将这些元素添加到ArrayList中。 我做了以下
for(int i = 0; i < names.length; i++)
{
friendsNames.add(names[i]);
}
但是我的ArrayList内容如下。
Element 1: F
Element 2: I
Element 3: R
Element 4: S
Element 5: T
Element 6:
Element 7: N
有什么建议可以解决我的问题吗? 等等
您需要转义“ |” 因为它是正则表达式世界中的特殊字符。
String [] names = s.split("\\|");
为什么2“ \\”?
对于正则表达式,请转义“ |” 与“ \\ |”。 但是,由于“ \\”是Java的转义字符,因此您需要对其进行转义以保留regex表达式的“ \\”。
管道是split方法接受的正则表达式中的特殊字符。 因此,您必须转义该字符,以便将其解释为分隔符char。
import static java.util.Arrays.asList;
//...
String s = "FirstName1 LastName1|FirstName2 LastName2|FirstName3 LastName4|";
List<String> items = asList(s.split("\\|"));
如果您不希望分隔符代表正则表达式,请使用Pattern.quote()方法转义它包含的任何特殊字符。
String[] items = s.split(Pattern.quote("|"));
管道字符|
表示正则表达式中的替代项。 因此,拆分规范的意思是“拆分为任何空字符串或任何空字符串”。 每个字符之间都有空字符串,因此这就是每个字符都分开的原因。
特殊的正则表达式字符(例如管道)可以使用\\
进行“转义”。 这会将其禁用为特殊字符,并使其与|
匹配|
输入中的字符。
为了使事情复杂化, \\
在Java字符和字符串文字中有特殊含义,因此也需要使用另一个\\
字符对其进行转义! 这意味着,您的分隔符总共应为"\\\\|"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.