【问题标题】:How to handle reading from files where lines aren't well-formed如何处理从行格式不正确的文件中读取
【发布时间】:2015-04-27 21:47:43
【问题描述】:

我有一个目录,其中包含多个文本文件,每个文件都包含一行由逗号分隔的文本。在创建字符串数组时,我希望在从每个文件中读取时找到 4 个标记。因此,文本文件中的正常行是这样的:

cat,dog,876358293472,884459654596

但我想考虑未按预期形成的文件。或者如果文件为空。例如,一个文件可能只有这个:

cat,dog,

cat,0000000000000

我有一些代码来处理令牌长度,但我不确定如何解决文件未按预期格式化的情况。到目前为止,这是我所拥有的:

while((line = br.readLine()) != null) {
        try {
            String [] tokens = line.trim().split(",");
            if (tokens.length != 4) {
                return null;
                }

除了 'token.length' 之外,我还应该做其他检查吗?

【问题讨论】:

  • 这将取决于您的要求。没有“通用规则”来检查“一行是否像我期望的那样格式化”。你必须自己回答这个问题:你期望什么? :-)
  • 啊,是的,我确实希望后两个标记是数字。
  • 所以你想让tokens[0]tokens[1] 有字母字符,而tokens[2]tokens[3] 有数字字符?您可能需要检查thisthis

标签: java arrays token readline


【解决方案1】:

您需要调用split(",",-1),以防止合并空字段:

"a,b,c,".split(",") --> ["a", "b", "c"]

"a,b,c,".split(",",-1) --> ["a", "b", "c", ""]

如果您只关心获取 4 个字符串,那么测试就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多