2017-12-13 9 views
-4

텍스트 파일을 한 줄씩 읽고 특정 문자열을 추출하려고 시도하지만 그렇게 할 수 없습니다. 내 파일의 내용은 내가 분할 & 문자열을 사용하여 시도문장에서 특정 문자열을 추출하는 방법

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

아래의 형식이 특정 문자열을 추출 할하지만 내 결과가 예상되지 않는 한 아래의 형식

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 

에있을 것입니다. 도와주세요.

+0

'xxxx, x, xxx.xxx : xxx, 1,2,3,4 ...'패턴입니까? – assembler

+0

http://idownvotedbecau.se/itsnotworking/ – slim

답변

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 반환합니다. 전체 텍스트 파일을 반복하여 각 문자열에 대해 해당 결과를 얻을 수 있습니다.

+0

감사합니다. 그것은 효과가 있었다. – user8478502

+0

도와 드리겠습니다 :) – dsesto

1

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