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

时间:2017-12-13 15:55:02

标签: 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
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

尝试使用split& substring但我的结果并不像预期的那样。请帮忙。

2 个答案:

答案 0 :(得分:1)

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

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作为输出。您可以遍历整个文本文件并获取每个字符串的相应结果。

答案 1 :(得分:1)

当然,你可以使用split,但是使用正则表达式匹配前三个以逗号分隔的字符串会更快,特别是如果数字列表很大,并且你想避免为每一行创建数组: / p>

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);
}