1

こんにちは私は解析して検証し、マップを介して送信する修正長メッセージを持っています。私はこのアプローチについて意見を聞きたいので、他にもっと良い方法があるかどうかを知る必要があります。

例えば。コードは疑似です

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 に答える