Чтение поля в строке, разделенной на вкладки - PullRequest
1 голос
/ 03 ноября 2011

У меня есть текстовый файл с lacs строки и одной строки в следующем формате:

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

Я хочу извлечь полный текст в последнем поле, т.е. d из строки.

Как я могу это сделать после прочтения строки с помощью BufferedReader.

Ответы [ 4 ]

3 голосов
/ 03 ноября 2011

Один из возможных способов заключается в следующем:

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 голос
/ 03 ноября 2011

lins.substring (line.lastIndexOf (x));
line.lastIndexOf (x) вернет индекс последнего найденного символа x (в данном случае x является вкладкой (\ t)), и вы можно получить подстроку вашей строки из этого индекса. если ваше последнее поле также содержит этот символ, вы должны использовать регулярные выражения.

1 голос
/ 03 ноября 2011

Вы можете использовать метод 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);
0 голосов
/ 03 ноября 2011

Вы можете сохранить текст, который вы прочитали из файла, в 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...