2011-08-09 5 views
0

에서 라인의 인덱스를 종료 내가 시작하려는 텍스트 아래의 인덱스를 끝 ... 여기... 개까지 선이 끝나는 자바

고정되어 시작하지만 단어가 fixed..ending되지 끝나는 찾는 방법

라인은 다음과 같습니다

Cardiovascular:ROS:Neurological: 
Cardiovascular:ROS:XYZ: 
Cardiovascular:ROS:ABC::: 

내가 인덱스를 시작 찾을 수 있지만 어떻게가 해결되지 index..as 끝을 찾을 수 있습니다.

+5

그래서 어떤이는 단락의 일부입니다 –

+0

다음 세 가지 예에 꼭 필요한 할 ... 내가 점에서 전체 문서가하는 문자열 (이상 포함 된 한 줄이있다 위에서 설명한대로 고정되지 않음). – Sweety

답변

0

당신이 정규식 매처를 사용하는 경우 다음 yourString.indexOf(yourString.substring(yourString.length-1));

2

String로 그 라인을 저장하는 경우, 각 경기의 시작과 끝 인덱스를 제공합니다.

샘플 코드

// move this to a constant 
final Pattern pattern = Pattern.compile(
     "\\b # word boundary (start of word) \n" + 
     "\\w+ # one or more word characters \n" + 
     "\\b # another word boundary (end of word)", Pattern.COMMENTS); 

final String line = "Cardiovascular:ROS:Neurological:"; 
final Matcher matcher = pattern.matcher(line); 
while(matcher.find()){ 
    System.out.println("Found word "+matcher.group()+" at start index: "+matcher.start()+ ", end index: "+matcher.end()); 
} 

출력 :

발견 단어 심혈관 시작 인덱스에서 0, 끝 인덱스 시작 인덱스 14
발견 단어 ROS : 15, 단부 색인 : 18
발견 된 단어 시작 색인에서 신경학 : 19, 끝 색인 : 31

열 인덱스가 필요한 경우 행당 하나의 Matcher를 사용하지만 String 시작 부분부터 인덱스가 필요한 경우 행을 분할하지 말고 전체 String에서 Matcher를 실행하십시오.

0

당신이 String 형의 라인의 마지막 문자의 인덱스를 원하는 경우, 인덱스 = line.length() - 1

0

당신은 토큰으로 문자열을 켜고 첫 번째를 취할 토크 나이 문자열을 사용할 수 있습니다 당신이 마지막에 도달 할 때까지 토큰을 반복하십시오.

코드

import java.util.StringTokenizer; 
public class App { 

    static String in = "Cardiovascular:ROS:Neurological:"; 
    static String in2 = "Cardiovascular:ROS:XYZ:"; 
    static String in3 = "Cardiovascular:ROS:ABC:::"; 

    public static void main(String[] args) { 
     StringTokenizer st = new StringTokenizer(in2, ":"); 
     if(st.hasMoreTokens()) { 
      String first = st.nextToken(); 
      for (int i = 0; i < st.countTokens()-1; i++) { 
       st.nextToken(); 
      } 
      String last = st.nextToken(); 
      System.out.println(first + " " + last); 
      System.out.println(in2.indexOf(last)); 
     } 
    } 
} 
0

당신이 얻을 원하는 것을 잘 모르겠지만, 그것은 각 라인에 대한 ":" 사이의 마지막 유효 문자열 인 경우.

String source = "Cardiovascular:ROS:Neurological:" + "\n" + 
     "Cardiovascular:ROS:XYZ:"     + "\n" + 
     "Cardiovascular:ROS:ABC:::"    + "\n" ; 

BufferedReader reader = new BufferedReader(new StringReader(source)); 

while(true) { 
    String line = reader.readLine(); 
    if(line == null) { 
     break; 
    } 
    String[] split = line.split(":"); 
    for(int i = split.length; i >= 0; i--) { 
     String part = split[i-1]; 
     if(!part.isEmpty()){ 
      int lineIndex = line.lastIndexOf(part); 
      int lineOffset = source.lastIndexOf(line); 
      System.out.println("found: "+part+ " line-index: "+lineIndex+ " text index: "+(lineOffset+lineIndex)); 
      break; 
     } 
    } 
} 
reader.close(); 

밖으로

found: Neurological line-index: 19 text index: 19 
found: XYZ line-index: 19 text index: 52 
found: ABC line-index: 19 text index: 76 
관련 문제