2014-11-20 2 views
0

Новое в java. Я хочу, чтобы прочитать в файл, который имеет строки, отформатированные как этотРазбиение строк по столбцу (Java)

en Fox 3 1344 
en Bird 19 144 
en Dog 93 1234 

Для каждой строки я хочу, чтобы выбрать содержимое колонки 2 и 3. В случае первой линии «Fox» и «3». и отображать их. Пока это то, что у меня есть.

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 


public class pagecounts { 

    public static void main(String[] args) throws FileNotFoundException { 

     String content = new Scanner(new File("filename")).useDelimiter("\\Z").next(); 

      *// letter in column 2 and 3 pick code goes here.* 

     System.out.println(content); 

    } 
} 

Любая помощь будет оценена по достоинству.

ответ

0

Использование split:

System.out.println(content.split(" ")[1] + " " + content.split(" ")[2]); 
1

Если предположить, что каждый столбец может содержать только одно значение (слово/число), вы можете использовать сканер для чтения всех маркеров образуют одну линию и использовать только эти, которые вас интересуют.

try(Scanner sc = new Scanner(new File(path))){//try-with-resources 
            //will automatically close stream to file 
    while (sc.hasNext()){ 
     String col1 = sc.next(); 
     String col2 = sc.next(); 
     int col3 = sc.nextInt();//you can also use next() if you want to get this token as String 
     int col4 = sc.nextInt();//same here 

     System.out.printf("%-15s %d%n", col2, col3); 
    } 
} 

Вы также можете прочитать строку за строкой и разделить каждую строку на пространстве

try(Scanner sc = new Scanner(new File(path))){//try-with-resources 
            //will automatically close stream to file 
    while (sc.hasNextLine()){ 
     String line = sc.nextLine(); 
     String[] tokens = line.split("\\s+");//I assume there are no empty collumns 
     System.out.printf("%-15s %s%n",tokens[1],tokens[2]); 
    } 
} 

Вы также можете рассматривать этот файл как CSV файл (разделенные запятыми), где значения разделены пробелом. Для анализа такого файла вы можете использовать библиотеку, такую ​​как OpenCSV, с разделителем, определенным как пробел

try(CSVReader reader = new CSVReader(new FileReader(path),' ')){ 
    String[] tokens = null;       // ^--- use space ' ' as delimiter 
    while((tokens = reader.readNext())!=null) 
     System.out.printf("%-15s %s%n",tokens[1],tokens[2]); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
Смежные вопросы