基于列的字符串分割(Java)[关闭]

问题描述 投票:0回答:2

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);

   }
 }

任何帮助将不胜感激。

java string text format
2个回答
1
投票

假设每一列只能包含一个值(单词/数字),您可以使用 Scanner 读取一行中的所有标记,并仅使用您感兴趣的标记。

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 columns
        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();
}

0
投票

使用

split

 System.out.println(content.split(" ")[1] + " " + content.split(" ")[2]);
© www.soinside.com 2019 - 2024. All rights reserved.