java - 确定缺失数据

标签 java

我有文本文件。它在每行中包含分隔数据,例如,

120 US 1 ALASKA 4.

在某些行中,某些数据丢失。就像,

US 1 ALASKA 4

由于它是由空格分隔的,因此我使用 split 来获取 token 。我无法确定缺少哪些数据。

在下面的代码中,示例 input1 将验证 120 是否为 ^[1-9]+$。如果行中缺少 120(如示例 input2 所示),则 token[0] 将具有 US ,它将验证 ^[1-9]+$ 并给出 “Error in a”。相反,我想知道缺少哪个值。因此,我可以显示错误 “Error a i miss” 并且 token[1] 应包含 US,以便我可以正确验证.

有人可以提供一些执行上述操作的想法吗?

        String line = "120 US 1 ALASKA 4"; //Sample input1
       //String line = "US 1 ALASKA 4"; //Sample input2
        String delimiter = "[ ]+";
        String tokens[] = line.split(delimiter);

        String a = tokens[0];
        String b = tokens[1];
        String c = tokens[2];
        String d = tokens[3];
        String e = tokens[4];

        //Sample validation
        if(a.matches("^[1-9]+$")){
           System.out.println("Matches");
        }else{
           System.out.println("Error in a");
        }        

最佳答案

我会尝试以下方法:

  • 将一行分成多个标记。
  • 分析每个标记以确定它可能属于的可能位置(字符串只能位于位置 2 或 4,整数只能位于 1,3 或 5。长字符串必须位于位置 5 ...
  • 由于 token 的位置必须增加,您可以确定可能丢失的 token 。

关于java - 确定缺失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141229/

相关文章:

java - Java 应用程序中的多数据库支持

java - com.sun.mirror.apt API

java - 使用正则表达式查找两个字符串之间的字符串

java - Android 应用程序错误 : net. wimpi.modbus.ModbusSlaveException:错误代码 = 2

java - Playorm java.lang.Integer 无法转换为 java.math.BigInteger

java - 使用 Console.readline() 测试 void main 的输出

java - 如何安全地保存我的 keystore

java - JMS 中的 MessageListener 和 Consumer 有什么区别?

java - 如何使用 main.xml 中定义的布局添加按钮?

java - 如何在 hashmap 中绑定(bind)函数