私はテキストファイルを持っています。ファイルの各行は、| n |で区切られた 'n'個の列を持つレコードを表します。 (パイプ)文字。列の値はint型、string型、date型、timestamp型などです。空の文字列と空白も列の値として使用できます。Javaのレコードのスキーマを確認してください
私は列値のカウントのみを検証しており、データ型の検証は不要です。 5列ごとの
サンプル有効なレコード:
1234|xyz|abc|2016-04-08 11:12:40|234
1235|efgh|abc|2016-04-09 11:25:40|
1236|efghij| ||
検証コード:
boolean valid = true;
String line = buffReader.readLine();
String[] tokens = null;
while (line != null){
tokens = line.split("\\|");
if ((tokens.length==4 || tokens.length==5) && countPipes(line)==4){
} else {
valid = false;
break;
}
line = buffReader.readLine();
}
private int countPipes(String line){
int count = 0;
count = line.length() - line.replace("|", "").length();
return count;
}
私はコードが良くなることを感じています。 誰かがこのコードを改善する方法を教えてもらえますか?
カラム値にエスケープされた '|'を許可していますか?はいの場合、検証でこれを処理する必要があります。 – dpr
@RealSkepticバグを指摘してくれてありがとう。私はそれを修正しました。 – Marco99
@dpr列の値に "|"確かに。 – Marco99