2012-05-04 6 views
0

データベースにインポートするためにスクラブしようとしているフラットファイルがあります。レイアウトは矛盾していますが、常にフィールド名(可変長テキストですが、常に9ワードまたはフレーズの1つ)とそれに続くフリーフォームテキストフィールド(最大1024バイトの可変長)で構成されます。私は、1024バイトのフィールドを抽出し、フィールド名の列にそれらを配置する必要があります。変数に複数のStringメソッドを使用する適切な方法は何ですか?

入力ファイル: - :各ラインを読む

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つのフィールド名のうちの1つで始まる場合は、部分文字列(フィールド名の後の最初の文字から行末の最後の文字まで)を、適切な列の位置にあるdelimintedフラットファイルに書き込みます。

このコードは、

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つのステートメントでメソッドを組み合わせるベストプラクティスは何ですか?私は 人間が読めることが少ないと感じ、効率についてはわかりません。

+0

Peterはあなたの直接の質問にうまく答えました。さて、splitコマンドを使用して、データフィールドを読みやすくすることができます。例えば。文字列headerAndData [] = inputLine.trim()。split( ""、1); – phatfingers

答えて

2

メソッドの最大サイズは64Kです。これ以上の方法は使用できません。また、思うように多くのメソッドを連鎖させる必要はありません。

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

は、私は何のベストプラクティスがあることは、コードが読みやすく、できるだけ理解しやすいようにすることです()正しくない...

最初のトリムを疑います。

効率性が最も重要な問題であることはほとんどありません。プロファイラを使用して、これが問題の原因であることは、読みやすさを追求してください。

関連する問題