나는 파일에서 한 줄씩 읽은 다음 그 줄을 arrayList 안에 문자열로 저장하는 질문에 갇혔습니다. 그런 다음이 목록은 "rings ="내가 사용하는 패턴이 다음에 나오는 int를 찾기 위해 순환됩니다. "(? < = rings =) [0-9] {1}"다음 코드로 print 문을 보여줍니다. 나이 int하지만 그것은 결코 그 int를 찾지 못할 방법을 의미하는 데 사용되지 않습니다. 어디에서 int를 가져 오는 지의 예입니다. .*rings=(\\d+).*
특정 패턴 다음에 찾을 수있는 파일에서 숫자를 반환
String pattern=".*rings=(\\d+).*";
Pattern rinngerPat = Pattern.compile(pattern);
그런 다음 group(1)
이
for(String line : fileToArray) {
Matcher xTimeSeeker = rinngerPat.matcher(line);
if(xTimeSeeker.find()) {
xTimesRing = xTimeSeeker.group(1);
int xTimeSeekerInt = Integer.parseInt(xTimesRing);
System.out.println(xTimeSeekerInt);
}
}
자체가 포함 된 당신의 자리를 갖게됩니다
//Event=ThermostatDay,time=12000
//Event=Bell,time=9000,rings=5
//Event=WaterOn,time=6000
코드는
for (int i = 0; i < fileToArray.size(); i++) {
try {
String friskForX = fileToArray.get(i).toString();
Matcher xTimeSeeker = rinngerPat.matcher(friskForX);
if (xTimeSeeker.group() != null) {
System.out.println("will ring more then once ");
xTimesRing = xTimeSeeker.group();
int xTimeSeekerInt = Integer.parseInt(xTimesRing);
System.out.println(xTimeSeekerInt);
}
}
//this catches it but does nothing since some files might not have x value.
catch (IllegalStateException e) { }
}
정규식을 건너 뛰고 각 행을 쉼표로 구문 분석하는 이유는 무엇입니까? –
나는 내가 따라 잡지 않는다고 생각한다. 이 이벤트는 내가 읽을 수없는 파일을 읽는 지침이며 변경이 불가능합니다. –
각 줄은 쉼표로 구분됩니까? 각 행을 쉼표로 분리하십시오. 각 색인을 확인하고'rings ='로 시작하는지 확인하십시오. –