1

嗨,我有一个固定长度的消息要解析和验证,然后通过 Map 发送。我想对这种方法发表意见,并且需要知道是否还有其他更好的方法可以做到这一点。

例如。代码是伪的

String input = "12345AmilaJayat21122012";
int split = {5,10,8};
int dataType = {1,2,3};//1=number,2=string,3=date DDMMYYYY

public void parseValidate(){
  loop split.size{
    String data = input.subString(0,split[i]);
    boolean validated = validateData(data,dataType[i]);//This method would vaidate data accordingly
    if(validated){
      input = input.subString(split[i]);
      //add to map
    }else{
      //Error message
      break;
    }

  }
}

这是我的基本想法,这个想法会有什么改进,如果有任何其他方法来解析和验证固定长度消息,它们会是什么?

PS。我检查了 Apache Camel:Bindy,显然它不适合我的需要。

4

1 回答 1

1

如果消息具有固定大小(或至少明确划分)的子字段,则将其分成单独的子字段并通过任何适当的方法验证每个子字段可能是最清晰(最易于维护)的。

如果您处理大量此类消息,因此速度是一个问题,并且约束相对简单(例如,此字段包含类似 MM/YY/DD 的内容),您可以考虑使用词法分析器并表达您的约束作为一长串正则表达式。如果令牌的正则表达式匹配,大多数词法分析器将允许您添加要执行的代码;如果您有一个字段验证谓词不能仅以形状表示(例如,正则表达式),您可以将谓词的“其余部分”附加到此操作,因此仅当字段具有正确的语法时才会调用它。

于 2012-12-19T10:51:49.463 回答