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

我的策略是:阅读每一行。如果该行以九个字段名之一开始,我将一个子字符串(字段名之后的第一个字符到行中的最后一个字符 - 修剪空格)写入适当列位置的分隔平面文件。

此代码有效,

 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()

  • 语句中方法的顺序是否有规则?

  • 在一个语句中组合方法的最佳实践是什么?我觉得它的可读性较差,而且我不确定效率。

4

1 回答 1

2

方法的最大大小为 64K,您不能使用更多的方法。您可能还会发现您不需要像您想象的那样链接尽可能多的方法。

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

我怀疑第一个 trim() 不正确......

最佳实践是使代码尽可能易读且易于理解。

效率很少是最重要的问题,除非您可以通过使用分析器证明这是导致您遇到问题的原因,否则请坚持可读性。

于 2012-05-04T15:52:43.213 回答