繁体   English   中英

Java分割字串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM