gpt4 book ai didi

java - 基于逗号的分割线、奇怪的线

转载 作者:行者123 更新时间:2023-12-01 23:04:52 26 4
gpt4 key购买 nike

我有以下行逗号分隔,

LanguageID=0,LastKnownPeriod="Active",c_MultiPartyCall={Counter=1,TimeStamp=1394539271448},LTH={Data=["1|MTC|01.01.1970 15:00:00|0.0|7|-1|OnPeakAccountID|0|1000||","1|MTC|01.01.1970 15:00:00|0.0|7|-1|OnPeakAccountID|0|1000||"}

使用 split 方法,我可以获得逗号分隔的值,但实际问题出现在文本 c_MultiPartyCall={Counter=1,TimeStamp=1394539271448} 时。 , 因为逗号是在其自身内部找到的。

所以分割后的单词应该是,

  • LanguageID=0
  • LastKnownPeriod="Active"
  • c_MultiPartyCall={Counter=1,TimeStamp=1394539271448} (在单词中再次发现逗号)
  • LTH={Data=["1|MTC|01.01.1970 15:00:00|0.0|7|-1|OnPeakAccountID|0|1000||","1|MTC|01.01.1970 15:00:00|0.0|7|-1|OnPeakAccountID|0|1000||"} (逗号再次出现在大括号内的单词中)

我尝试使用以下代码但没有成功:

String arr[]=input_line.split("(.*!{),(.*!})");
for (int i=0;i<arr.length;i++)
System.out.println(arr[i]);

请指教。

最佳答案

改用正则表达式:

([\w_]+=(?:\{[\w=_,\[\]"\|:\.\s-]*\}))|([^,]+)

这会将线路分为 4 个部分:

  • 语言ID=0
  • LastKnownPeriod="Activity "
  • c_MultiPartyCall={计数器=1,时间戳=1394539271448}
  • LTH={Data=["1|MTC|1970.01.01 15:00:00|0.0|7|-1|OnPeakAccountID|0|1000||","1|MTC|1970.01.01 15:00 :00|0.0|7|-1|OnPeakAccountID|0|1000||"}

代码:

import java.util.regex.*;

public class JavaRegEx {
public static void main(String[] args) {
String line = "LanguageID=0,LastKnownPeriod=\"Active\",c_MultiPartyCall={Counter=1,TimeStamp=1394539271448},LTH={Data=[\"1|MTC|01.01.1970 15:00:00|0.0|7|-1|OnPeakAccountID|0|1000||\",\"1|MTC|01.01.1970 15:00:00|0.0|7|-1|OnPeakAccountID|0|1000||\"}";

Pattern pattern = Pattern.compile("([\\w_]+=(?:\\{[\\w=_,\\[\\]\"\\|:\\.\\s-]*\\}))|([^,]+)");
Matcher matcher = pattern.matcher(line);

while(matcher.find())
System.out.println(matcher.group(0));

}
}

关于java - 基于逗号的分割线、奇怪的线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22937065/

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