将文本行从文件转换为字符串数组

时间:2018-12-13 14:54:21

标签: java drjava

我读取了.txt文件中的信息,现在我想将文本中的信息行存储到字符串数组或变量中。

.txt文件中的信息如下:

Onesimus, Andrea
BAYV
Twendi, Meghan
RHHS
Threesten, Heidi
MDHS

我想将BAYV,RHHS,MDHS存储到与名称不同的数组中。

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

class testing2 {
 public static void main(String [] args) throws Exception {


File Bayviewcamp = new File ("H:\\Profile\\Desktop\\ICS3U\\Bayviewland Camp\\Studentinfo.txt");
Scanner scanner = new Scanner (Bayviewcamp);

while (scanner.hasNextLine())
  System.out.println(scanner.nextLine());

2 个答案:

答案 0 :(得分:0)

下面的代码有一些限制,例如:

  1. 必须使用您说的格式(名称和下一行值)
  2. 默认情况下,数组大小为100,但您可以根据需要更改
  3. 我的名字是一行:(Onesimus,Andrea)它在名称数组的第一个索引下。

    private static final int ARRAY_LENGTH = 100;
    
    public static void main(String[] args) throws FileNotFoundException {
    
      boolean isValue = false;
      File txt = new File("file.txt");
      Scanner scanner = new Scanner(txt);
    
      String[] names = new String[ARRAY_LENGTH];
      String[] values = new String[ARRAY_LENGTH];
      int lineNumber = 0;
      while (scanner.hasNextLine()) {
        if (isValue) {
            values[lineNumber / 2] = scanner.nextLine();
        } else {
            names[lineNumber / 2] = scanner.nextLine();
        }
        isValue = !isValue;
        lineNumber++;
      }
      for (int i = 0; i < ARRAY_LENGTH; i++) {
        System.out.println(names[i]);
        System.out.println(values[i]);
      }
    }
    

下面的代码返回分隔的名称:

private static final int ARRAY_LENGTH = 100;

public static void main(String[] args) throws FileNotFoundException {
    boolean isValue = false;
    File txt = new File("file.txt");
    Scanner scanner = new Scanner(txt);

    String[] names = new String[ARRAY_LENGTH];
    String[] values = new String[ARRAY_LENGTH];
    int namesNumber = 0;
    int valuesNumber = 0;
    while (scanner.hasNextLine()) {
        if (!isValue) {
            String tempArrayNames[] = scanner.nextLine().split(",");
            values[valuesNumber++] = tempArrayNames[0].trim();
            values[valuesNumber++] = tempArrayNames[1].trim();
        } else {
            names[namesNumber++] = scanner.nextLine();
        }
        isValue = !isValue;
    }
}

答案 1 :(得分:0)

检查名称是否与正则表达式“ [A-Z]+”匹配

        List<String> upperCaseList = new ArrayList<>();
        List<String> lowerCaseList = new ArrayList<>();

        while (scanner.hasNextLine()) {
              String[] names = scanner.nextLine().split(",");
              for(String name:names) {
                  if(name.matches("[A-Z]+")) {
                      upperCaseList.add(name);
                  }
                  else {
                      lowerCaseList.add(name);
                  }
              }
        }

根据您的示例,某些名称前导空格。与正则表达式进行比较之前,您可能需要修剪这些空间

              for(String name:names) {
                  if(name.trim().matches("[A-Z]+")) {
                      upperCaseList.add(name.trim());
                  }
                  else {
                      lowerCaseList.add(name.trim());
                  }
              }