0

データベースにインポートするためにスクラブしようとしているフラットファイルがあります。レイアウトに一貫性はありませんが、常にフィールド名(可変長のテキストですが、常に9つの単語またはフレーズのいずれか)とそれに続く自由形式のテキストフィールド(最大1024バイトの可変長)で構成されます。1024バイトのフィールドを抽出し、フィールド名全体の列に配置する必要があります。

入力ファイル:

 foo-01 bunches of data
 foo bar01 more bunches of data including a bunch of notes
 foo-01 lots of data lives in this field
 foo18 monday notes 
    ...etc.

出力ファイル-区切られ、スペースがトリミングされます

 foo-01;foo bar 01;foo18                 (<-- header row)
 bunches of data; more bunches of data including a bunch of notes; ;
 lots of data lives in this field; ; notes

私の戦略はこれです:各行を読んでください。行が9つのフィールド名のいずれかで始まる場合、適切な列位置にあるデリミントされたフラットファイルにサブストリング(フィールド名の後の最初の文字から行の最後の文字まで-スペースはトリミングされます)を書き込みます。

このコードは機能しますが、

 if(inputLine.startsWith("foo-01"))
 {
      String lineVal = inputLine.trim();
      int lVLen = lineVal.length();
      String outVal  = lineVal.substring(17,lVLen);
      String outValTrim = outVal.trim();
      System.out.println(evalVal+" "+inputLine+" "+outValTrim);
  }
  else 
  ...etc...

しかし、疑問が生じます。

検討:

 String outValTrim = inputLine.trim().substring(17,inputLine.trim().length()).trim();
  • 使用できるメソッドの最大数はいくつですか?例えば、 foo = Stringmethod1.Stringmethod2.StringMethod3()

  • ステートメント内のメソッドの順序に規則はありますか?

  • 1つのステートメントでメソッドを組み合わせるためのベストプラクティスは何ですか?人間が読める形式ではないと感じており、効率についてはよくわかりません。

4

1 に答える 1

2

メソッドの最大サイズは 64K です。これ以上のメソッドは使用できません。また、思ったほど多くのメソッドをチェーンする必要がないことに気付くかもしれません。

String outValTrim = inputLine.trim().substring(17).trim()

最初の trim() が正しくないと思われます...

ベスト プラクティスは、コードをできるだけ読みやすく理解しやすいものにすることです。

効率が最も重要な問題になることはめったにありません。プロファイラーなどを使用して、これが問題の原因であることを証明できない限り、可読性に固執してください。

于 2012-05-04T15:52:43.213 に答える