java 在双管上拆分管柱(||)使用字符串.split()

vfwfrxfs  于 2023-01-07  发布在  Java
关注(0)|答案(6)|浏览(135)

我正试着用双管把绳子分开。||)作为分隔符。字符串看起来像这样:

String str ="user@email1.com||user@email2.com||user@email3.com";

我可以使用StringTokeniser来拆分它。javadoc说不鼓励使用这个类,而是将String.split作为选项。

StringTokenizer token = new StringTokenizer(str, "||");

上面的代码工作正常。但是不能弄清楚为什么下面的string。split函数没有给我预期的结果。

String[] strArry = str.split("\\||");

我哪里错了...?

wd2eg0qa

wd2eg0qa1#

String.split()使用正则表达式。您需要转义要用作分隔符的字符串。
Pattern有一个方法可以为您完成这项工作,即Pattern.quote(String s)

String[] split = str.split(Pattern.quote("||"));
k4emjkb1

k4emjkb12#

必须像这样转义每个|

mctunoxg

mctunoxg3#

尝试以下操作:

String[] strArry = str.split("\\|\\|");
3qpi33ja

3qpi33ja4#

你也可以试试这个...

String[] splits = str.split("[\\|]+");

请注意,必须转义管道符,因为它在正则表达式中有特殊含义,而String.split()方法需要一个正则表达式参数。

x6h2sr28

x6h2sr285#

为此,您可以遵循两种不同的方法,您可以遵循您最适合的套件:

方法1:
通过使用字符串分割功能

String str = "a||b||c||d";
String[] parts = str.split("\\|\\|");

这将在拆分后返回不同值的数组:

parts[0] = "a"
parts[1] = "b"
parts[2] = "c"
parts[3] = "d"

方法2:
通过使用模式和匹配器

import java.util.regex.Matcher;
import java.util.regex.Pattern;

String str = "a||b||c||d";

Pattern p = Pattern.compile("\\|\\|");
Matcher m = p.matcher(str);

while (m.find()) {
    System.out.println("Found two consecutive pipes at index " + m.start());
}

这将为您提供连续管道的索引位置:

parts[0] = "a"
parts[1] = "b"
parts[2] = "c"
parts[3] = "d"
6tdlim6h

6tdlim6h6#

试试这个

String yourstring="Hello || World";
String[] storiesdetails = yourstring.split("\\|\\|");

相关问题