gpt4 book ai didi

java - 如何根据字符串、空格和符号的组合进行拆分?

转载 作者:行者123 更新时间:2023-12-02 05:03:16 26 4
gpt4 key购买 nike

我致力于分解条件字符串,如下所示,通过删除无意义的部分并将其拆分为仅包含有用部分的数组,如下所示:

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

“01:IF”、“with”、“&”和任何空格都是分隔符,需要删除。执行结果为:

01:IF   rd.h && dq.L && o.LL && v.L THEN la.VHB , av.VHR with 0.4610;
<--- un wonted space
rd.h
dq.L
o.LL
v.L
THEN
la.VHB
av.VHR
<--- un wonted space
0.4610;

空格显示为分割字符串中的第一个和第九个元素。我怎样才能摆脱这些多余的空间?另外,我需要更多关于如何利用 split.regex 中提到的不同选项的好例子。 ,以及如何将它们组合在一个正则表达式中。 Stack Overflow 中的大多数答案都是基于一个分隔符,不存在带有插图的复杂组合。谢谢。

最佳答案

您可以使用 PatternMatcher 类实现相同的目的。

String s1="01:IF   rd.h && dq.L && o.LL && v.L THEN la.VHB , av.VHR with 0.4610;";
Matcher m = Pattern.compile("(?:\\d{2,3}?(?::IF))?[\\s,&]+(?:with)?|(\\S+)").matcher(s1);
while(m.find())
{
if(m.group(1) != null)
System.out.println(m.group(1));
}

我刚刚将正则表达式中存在的所有捕获组转换为非捕获组,并在最后添加了一个额外的 |(\\S+) ,这意味着仅对剩余字符串进行匹配 ( 除了匹配的字符)。 (\\S+) 捕获一个或多个非空格字符。

输出:

rd.h
dq.L
o.LL
v.L
THEN
la.VHB
av.VHR
0.4610;

DEMO

关于java - 如何根据字符串、空格和符号的组合进行拆分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28044869/

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