我有一个平面文件,我正在尝试清理以导入数据库。布局不一致,但始终包含一个fieldname(可变长度文本,但总是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()
声明中的方法顺序是否有规则?
在一个声明中组合方法的最佳做法是什么?一世 觉得它不那么人性化,而且我不确定效率。
答案 0 :(得分:2)
方法的最大大小为64K,您不能使用比此方法更多的方法。您可能还会发现,您不需要像您想象的那样使用尽可能多的方法。
String outValTrim = inputLine.trim().substring(17).trim()
我怀疑第一个trim()不正确......
最佳做法是使代码尽可能易读且易于理解。
效率很少是最重要的问题,除非你可以证明,例如通过使用分析器,这是导致问题的原因,坚持可读性。