如何在java中从句子中提取特定字符串

如何在java中从句子中提取特定字符串,java,string,split,Java,String,Split,我正在逐行读取一个文本文件,并试图提取一个特定的字符串,但无法这样做。我的文件内容将采用以下格式 CgIn,f,CgIn.util:srv2,1,11.65,42,42,42,42,04,04,04,04 wPub,j,pub.stg:cc,2,100,06,00,12,12,00,12,12,06 wPub,j,pub.f:Log,1,100,08,08,08,08,08,08,08,08 wPub,j,pub.math:add,1,100,16,16,16,16,16,16,16,16 wM

我正在逐行读取一个文本文件,并试图提取一个特定的字符串,但无法这样做。我的文件内容将采用以下格式

CgIn,f,CgIn.util:srv2,1,11.65,42,42,42,42,04,04,04,04
wPub,j,pub.stg:cc,2,100,06,00,12,12,00,12,12,06
wPub,j,pub.f:Log,1,100,08,08,08,08,08,08,08,08
wPub,j,pub.math:add,1,100,16,16,16,16,16,16,16,16
wMon,j,admin:img,111,100,04,00,.450,.503,00,.450,.503,04
我想以下面的格式提取这个特定字符串

CgIn,f,CgIn.util:srv2
wPub,j,pub.stg:cc
wPub,j,pub.f:Log
wPub,j,pub.math:add
wMon,j,admin:img

尝试使用拆分和子字符串,但结果不符合预期。请提供帮助。

假设您在整个文本文件中具有相同的结构(例如:
字符串、字符串、字符串、数字),您可以执行以下操作:

String str = "CgIn,f,CgIn.util:srv2,1,11.65,42,42,42,42,04,04,04,04";

String[] s=str.split(",");
System.out.println(s[0]+","+s[1]+","+s[2]);

这将返回
CgIn,f,CgIn.util:srv2
作为输出。您可以循环整个文本文件并获得每个字符串的相应结果。

当然,您可以使用split,但使用正则表达式仅匹配前三个逗号分隔的字符串会更快,尤其是当数字列表较大且希望避免为每行创建数组时:

Pattern p = Pattern.compile("^((?:[^,]+,){2}(?:[^,]+)).+$");
String line = "CgIn,f,CgIn.util:srv2,1,11.65,42,42,42,42,04,04,04,04";
Matcher m = p.matcher(line);
String result;
if (m.matches()) {
    result = m.group(1);
}

xxxx,x,xxx.xxx:xxx,1,2,3,4…
会是这种模式吗?很乐意帮忙:)