Java根据长度从文本文件中分割行并将其放入向量中

问题描述

首先,我是Java的新手,所以如果这个问题听起来很愚蠢,请原谅我。为了解释我的程序,我需要创建一个2d向量,该向量存储从文本文件中检索到的信息。假设我有一个像这样的文本文件

    12345    abcde   09876   mnbvc  
    8762121  hsggkqe 87201   hayib  
    5142     ayega   61      hsgwq

每列都有固定的长度。我知道我们可以使用String Tokenizer在Java中拆分字符串,但是在这种情况下,我们可以使用多个“”。所以我的问题是Java是否具有类似于String Tokenizer的功能,但是可以根据长度拆分字符串。该方法是否可以执行> 9和

解决方法

忘记列宽;在任意数量的空格上分割:

String[] columns = line.trim().split(" +");

split()以正则表达式为参数," +"表示“一个或多个空格”。

您需要调用trim()来去除前导空格,否则您将获得一个空白字符串作为返回的第一个元素。

,

子字符串应该可以解决问题。子字符串为您提供了从开始索引到结束索引-1的一部分。

String substring(int beginIndex,int endIndex)

示例

lineOneText代表文件第一行的文字。

String firstColumn = lineOneText.substring(0,9) // this equals "    12345"
String secondColumn = lineOneText.substring(9,15) // this equals "    abcde"
,

将行使用方法split(" ")分开,我们得到一个String数组,然后迭代该String数组以找到非空字符串,代码可能像这样:

String line = "12345    abcde   09876   mnbvc";
String[] words = line.split(" ");
List<String> list = new ArrayList<>(4);
for (String word : words) {
    if (!word.isEmpty()) {
        list.add(word);
    }
}
System.out.println(list);