gpt4 book ai didi

java - 为什么空格在该分割指令中显示为子字符串?

转载 作者:行者123 更新时间:2023-11-30 03:35:31 25 4
gpt4 key购买 nike

我有一个带有空格的字符串和一些非信息性字符以及需要排除的子字符串,只是为了保留一些重要的部分。我使用的分割如下:

String myString[]={"01: Hi       you look tired today?  Can I help you?"};
myString=myString[0].split("[\\s+]");// Split based on any white spaces
for(int ii=0;ii<myString.length;ii++)
System.out.println(myString[ii]);

结果是:

01:
Hi






you
look
tired
today?

Can
I
help
you?

当正则表达式为“[\s+]”时,空格在分割后作为子字符串出现,但当正则表达式为“\s+”时消失。我很困惑,无法在相关的堆栈溢出页面中找到答案。链接regex-Pattern让我更加困惑。请帮忙,我是java新手。

19/1/2015:Edit

经过您的宝贵建议,我在程序中达到了需要分解和处理条件语句的目的。我手上的案例是:

String s1="01:IF   rd.h && dq.L && o.LL && v.L THEN la.VHB , av.VHR with 0.4610;";
String [] s2=s1.split(("[\\s\\&\\,]+"));
for(int ii=0;ii<s2.length;ii++)System.out.println(s2[ii]);

到目前为止,结果很好:

01:IF
rd.h
dq.L
o.LL
v.L
THEN
la.VHB
av.VHR
with
0.4610;

我的下一步是将字符串“with”添加到正则表达式中,并在进行拆分时删除该单词。我尝试了这样的方法:

String s1="01:IF   rd.h && dq.L && o.LL && v.L THEN la.VHB , av.VHR with 0.4610;";
String [] s2=s1.split(("[\\s\\&\\, with]+"));
for(int ii=0;ii<s2.length;ii++)System.out.println(s2[ii]);

结果并不完美,因为我在每个“h”字母处都得到了不寻常的额外分割:

01:IF
rd.
dq.L
o.LL
v.L
THEN
la.VHB
av.VHR
0.4610;

关于如何指定带有混合空格和分隔标记的字符串有什么建议吗?非常感谢。

最佳答案

在方括号内,[\s+] 将表示添加了加号的空白字符类。它只是一个字符,因此如托德所述,一系列空格将分割许多空字符串,并且还将使用 + 作为分隔符。

您应该使用\s+(不带括号)作为分隔符。这意味着一个或多个空白字符。

myString=myString[0].split("\\s+");

关于java - 为什么空格在该分割指令中显示为子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28005546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com