2011-11-03 35 views
1

我行的LACS的一個文本文件分割線讀取一個字段和單行格式如下:由標籤

a | b | c(may contain url) | d(may contain url) 

我想提取的最後一個字段的完整文本即從線路d

一旦我使用BufferedReader讀取了該行,我該怎麼做。

回答

3

一個可能的方法如下:

package eu.webfarmr.stackoverflow; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 

/** 
* The goal of this class is to read lines from a text file which contain 
* vertical bars and extract the fields separated by these tabs 
* 
* @author djob 
* 
*/ 
public class FileLACSReader { 

    private final static String SEPARATOR = "\\|"; 

    /** 
    * 
    * @param args 
    */ 
    public static void main(String args[]) throws Exception{ 
     List<String> lines = readContents("etc/sampleInput.txt"); 
     for (String input : lines) { 
      String[] splitContent = input.split(SEPARATOR); 
      for (String field : splitContent) { 
       System.out.println(field); 
      } 
     } 
    } 

    public static List<String> readContents(String file) 
      throws FileNotFoundException { 
     List<String> textLines = new ArrayList<String>(); 
     FileInputStream stream = new FileInputStream(new File(file)); 
     Scanner scanner = new Scanner(stream); 
     try { 
      while (scanner.hasNextLine()) { 
       textLines.add(scanner.nextLine()); 
      } 
     } finally { 
      scanner.close(); 
     } 
     return textLines; 

    } 

} 

我希望這有助於。

1

可以使用String.split方法:

String line = "a | b | c(may contain url) | d(may contain url)"; 
    String[] parts = line.split("\\|"); 
    String lastPart = parts[parts.length - 1]; 
    System.out.println(lastPart); 
1

lins.substring(line.lastIndexOf(X));
line.lastIndexOf(x)將返回最後找到的x符號的索引(在這種情況下,x是一個製表符(\ t)),您可以從該索引獲取行的子字符串。 如果您的最後一個字段也包含該符號,則應使用正則表達式。

0

您駕駛室商店,你從文件中讀取到一個String,比文本,你可以這樣做:

String str = "a | b | c(may contain url) | d(may contain url)"; 
int x = str.lastIndexOf("|"); 
String str1 = str.substring(x+2); 
System.out.println(str1);