Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java的split string方法也可以返回带有分隔符的数组吗_Java_String_Split - Fatal编程技术网

java的split string方法也可以返回带有分隔符的数组吗

java的split string方法也可以返回带有分隔符的数组吗,java,string,split,Java,String,Split,在java中对要拆分的字符串使用String.Split()方法时,其工作原理如下: String s = "hello my dear"; String[] ss = s.split("[ ]"); 数组ss包含[您好,我的,亲爱的],但本例中的空格(分隔符)不是数组的一部分 是否有某种方式可以使分隔符成为使用Java中string类的split方法生成的数组的一部分。使用重载构造函数: String s = "hello my dear"; StringTokenizer st = new

在java中对要拆分的字符串使用
String.Split()
方法时,其工作原理如下:

String s = "hello my dear";
String[] ss = s.split("[ ]");
数组
ss
包含
[您好,我的,亲爱的]
,但本例中的空格(分隔符)不是数组的一部分

是否有某种方式可以使分隔符成为使用Java中string类的split方法生成的数组的一部分。

使用重载构造函数:

String s = "hello my dear";
StringTokenizer st = new StringTokenizer(s, " ", true);
while(st.hasMoreTokens()){
    System.out.println(st.nextToken());
}
输出:

hello

my

dear
使用重载构造函数:

String s = "hello my dear";
StringTokenizer st = new StringTokenizer(s, " ", true);
while(st.hasMoreTokens()){
    System.out.println(st.nextToken());
}
输出:

hello

my

dear

您可以这样做:-

"hello my dear".split("(?<=[ ])");
hello_
my_
dear
System.out.println(Arrays.toString("a+b=c".split("(?<=[+=])|(?=[+=])")));
a + b = c
 ^ ^ ^ ^    <-- Empty strings before and after your pattern - `[+=]`
表示空间


如果希望分隔符是单独的数组元素,可以这样做:-

"hello my dear".split("(?<=[ ])");
hello_
my_
dear
System.out.println(Arrays.toString("a+b=c".split("(?<=[+=])|(?=[+=])")));
a + b = c
 ^ ^ ^ ^    <-- Empty strings before and after your pattern - `[+=]`
因此,数组中有5个元素

输出:-

[a, +, b, =, c]

但是您使用了错误的工具来解析数学表达式。您不应该为此使用正则表达式。

您可以这样做:-

"hello my dear".split("(?<=[ ])");
hello_
my_
dear
System.out.println(Arrays.toString("a+b=c".split("(?<=[+=])|(?=[+=])")));
a + b = c
 ^ ^ ^ ^    <-- Empty strings before and after your pattern - `[+=]`
表示空间


如果希望分隔符是单独的数组元素,可以这样做:-

"hello my dear".split("(?<=[ ])");
hello_
my_
dear
System.out.println(Arrays.toString("a+b=c".split("(?<=[+=])|(?=[+=])")));
a + b = c
 ^ ^ ^ ^    <-- Empty strings before and after your pattern - `[+=]`
因此,数组中有5个元素

输出:-

[a, +, b, =, c]

但是您使用了错误的工具来解析数学表达式。您不应该为此使用正则表达式。

您可以在单词边界上拆分

    String[] ts = "hello my dear".split("\\b");
    System.out.println(Arrays.toString(ts));

[, hello,  , my,  , dear]

或者

public String[]getParts(字符串s){
列表部件=新的ArrayList();
Pattern=Pattern.compile(“\\w+\\w)”;
匹配器m=模式匹配器;
while(m.find()){
部分。添加(m.组());
}
返回parts.toArray(新字符串[parts.size()]);
}

这与每个查找匹配,无论是单词
\\w+
(小w)还是非单词字符
\\w
(大写w)。

您可以在单词边界上拆分

    String[] ts = "hello my dear".split("\\b");
    System.out.println(Arrays.toString(ts));

[, hello,  , my,  , dear]

或者

public String[]getParts(字符串s){
列表部件=新的ArrayList();
Pattern=Pattern.compile(“\\w+\\w)”;
匹配器m=模式匹配器;
while(m.find()){
部分。添加(m.组());
}
返回parts.toArray(新字符串[parts.size()]);
}


这与每个查找匹配,无论是单词
\\w+
(小w)还是非单词字符
\\w
(大写w)。

我不这么认为,但我想手动添加分隔符并不难。使用
String#split
方法无法做到这一点。相反,我想可以使用一个正则表达式来搜索字符串数据,并在
String[]
List
@JesseJ中添加每个结果和分隔符,糟糕的方法!我不这么认为,但我想手动添加分隔符并不难。使用
String#split
方法无法做到这一点。相反,我想可以使用一个正则表达式来搜索字符串数据,并在
String[]
List
@JesseJ中添加每个结果和分隔符,糟糕的方法!我猜OP需要一个结果数组,比如[hello,uu,my,u,dead](基于您的示例)。假设我的字符串是a+b=c,我需要[a,+,b,=,c]作为拆分的结果。我该怎么办?@adeliqbal如果这是您应该解析的字符串,那么首先就不应该使用正则表达式。写一个真实的例子,说明你的需求和问题,以便社区能够帮助你。@adeeliqbal。。通过用正则表达式解析数学表达式,你想达到什么目的?@RohitJain我不必只解析数学表达式。这只是一个例子。字符串标记器很好地解决了我的问题。但是我的主管说可以使用字符串的拆分方法来完成。我想OP需要一个结果数组,比如[hello,uu,my,u,dead](基于您的示例)。假设我的字符串是a+b=c,我需要[a,+,b,=,c]作为拆分的结果。我该怎么办?@adeliqbal如果这是您应该解析的字符串,那么首先就不应该使用正则表达式。写一个真实的例子,说明你的需求和问题,以便社区能够帮助你。@adeeliqbal。。通过用正则表达式解析数学表达式,你想达到什么目的?@RohitJain我不必只解析数学表达式。这只是一个例子。字符串标记器很好地解决了我的问题。但是我的主管说可以使用string的split方法来完成;我需要的结果是[你好,亲爱的,;,a,=,b,+,c]…@adeeliqbal。。你真的想从你的字符串中得到所有的单词吗?你的例子让我倾向于这样想。对于“abc=(def+-7)”,你会得到:“,”abc“,“=(“,”def“,”+-“,”7“,”)。因此,
split
half-ways解决了拆分问题。@RohitJain是的,我需要字符串中的所有单词。@adeeliqbal。。你就不能修改我发布的例子来为你的例子工作吗。我认为,这将是一项相当容易的任务。现在就自己试试吧。这就是你学习的方式。如果我的字符串是s=“你好,亲爱的;a=b+c”;我需要的结果是[你好,亲爱的,;,a,=,b,+,c]…@adeeliqbal。。你真的想从你的字符串中得到所有的单词吗?你的例子让我倾向于这样想。对于“abc=(def+-7)”,你会得到:“,”abc“,“=(“,”def“,”+-“,”7“,”)。因此,
split
half-ways解决了拆分问题。@RohitJain是的,我需要字符串中的所有单词。@adeeliqbal。。你就不能修改我发布的例子来为你的例子工作吗。我认为,这将是一项相当容易的任务。现在就自己试试吧。这就是你学习的方式。