2014-12-12 1 views
1

의 끝에서 텍스트를 얻을 : 다음, size:, space 일부 텍스트가 일명문자열 내가 같은 텍스트가 포함 된 .txt 인 파일이 라인

blah blah blah size: 80

blah blah blah blah size: 150

int, new line, 반복 ... 이제 정수를 가져 와서 변수에 저장해야합니다. 내가 그 정수의 길이가 다양해서, 선으로 텍스트 행을 읽고 모든 것이 정상이지만, BufferedReader로를 사용하여, 나는 예를 들어 말할 수 없다 : 크기는 3 자리 숫자가있는 경우

String x = line.substring(line.indexOf("size") + 6, line.indexOf("size") + 8) 

때문에, 그것은 그 중 처음 두 개만 얻을 것입니다. 어떤 제안?

+1

고정 된 오프셋을 사용하지 마십시오. 발생한 첫 번째 공간에 대해 문자열을 역방향으로 스캔 한 다음 해당 숫자를 추출하기위한 시작점으로 사용하십시오. –

+0

":"문자에 줄을 나누지 않는 이유는 무엇입니까? – SuncoastOwner

답변

1

당신은 문자열이 문자열이 끝날 때까지 지정된 인덱스에서 시작 얻을 것 String#substring(beginIndex) 방법을 사용할 수 있습니다 :

String x = line.substring(line.indexOf("size") + 6); 
+0

나는 [very false]라고 확신한다. (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring (int, % 20int)). – snickers10m

+0

@ snickers10m 시작 인덱스 인 하나의 매개 변수 만 사용하고 있습니다. 귀하가 제공 한 링크는 다른 서명을위한 것입니다. – manouti

+0

죄송 합니다만, 귀하의 예는 _only_ 옵션이라고 말씀하신 것으로 알고 있습니다. – snickers10m

2

어떻게 하위 문자열하는 곳에서 결정하는 마지막 공간의 위치를 ​​사용하는 방법에 대해?

// can run in a for loop for each line 
String regEx = ".*size:\s+(\d+)"; 
Pattern pattern = Pattern.compile(regEx); 
Matcher matcher = pattern.matcher(line); // line to match 
if (matcher.matches()) { 
    String sizeVal = matcher.group(1); 
} 
1

당신은 split 문자열을 수도 있습니다 및 마지막 요소

String[] split = s.split(":"); 
System.out.println(split[1].trim()); 
//      ^-this is just an example, as an exercise try 
//       to figure out index of last element yourself 
+0

이것은 내가 제안한 것이며, 그를 위해 일하기를 원하지 않았다 ... 그런 식으로 아무것도 배울 수 없다! – SuncoastOwner

+0

@SuncoastOwner 이것은 내 마음 속으로 들어온 첫 번째 접근법입니다. 왜 OP가이 방법을 사용하지 않고 공백 인덱스에 의존하는지 궁금합니다. – sol4me

+0

확실하지 않습니다 ... 어느 쪽이든 작동합니다! – SuncoastOwner

1

당신은 정규식을 시도 할 수 있습니다 접근, 표현 아래 자리의 그룹을 얻는다 콜론

String x = line.substring(line.indexOf(":") + 2); 
0

이 후 문자열을 가져옵니다 :

String s = line.substring(line.lastIndexOf(' ')+1); 
관련 문제