2011-08-09 44 views
0

我要開始和結束的文本下方指數...如何找到結尾行的指數在java中

這裏開始是固定的,但最終字不fixed..ending是高達行結束...

線路是:

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

我能找到的起始索引,但如何找到結束index..as它是不固定的。

+5

所以究竟你需要在這三個例子 –

+0

這只是款的一部分...我有整個文檔中,有一條線是包含上述字符串(不像上面討論的那樣固定)。 – Sweety

回答

0

如果你是存儲該行作爲String,然後yourString.indexOf(yourString.substring(yourString.length-1));

2

如果使用正則表達式匹配器,它會爲您提供每場比賽開始和結束索引。

示例代碼

// 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

如果你需要一個列索引,使用每行一個匹配器,但如果你從字符串的開始需要一個指標,不拆的線,運行在整個字符串匹配器。

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