我有一个看起来像这样的字符串。
String line = "50464,"STRONACHLACHAR, PIER BUILDING AND PIER INCLUDING REVETMENT WALLS AND RAILINGS",C,04/05/2006,STIRLING,BUCHANAN";
如果我想将字符串拆分为6个部分以放入带
的数组String result = line.split(",");
我会遇到一个问题,因为STRONACHLACHAR, PIER BUILDING AND PIER INCLUDING REVETMENT WALLS AND RAILINGS
应该只是一个元素,因为它在""
之间,但由于那里还有一个komma,它也会被分割。我也不希望"
在那里。
如果我查找第一个'
的位置并创建该pos + 1
的子字符串,然后在该子字符串中查找另一个"
并从中创建一个子字符串。
现在我有两个字符串,其中一个字符串包含第一个"
之前的所有字符串,另一个字符串包含第二个"
之后的字符串,字符串值为STRONACHLACHAR, PIER BUILDING AND PIER INCLUDING REVETMENT WALLS AND RAILINGS
。然后我可以使用replace(",", "");
替换那里的komma,也可以保存komma的位置,一旦字符串在komma上分割,就把它放回去,但是那边。接下来的行动是再次连接在一起所以我得到:
50464,STRONACHLACHAR PIER BUILDING AND PIER INCLUDING REVETMENT WALLS AND RAILINGS,C,04/05/2006,STIRLING,BUCHANAN
可以在komma上成功分割,最后我会得到一个可以使用的6个元素的数组。
在编程中,它看起来像这样。关于如何放回komma的部分。
String line = "50464,\"STRONACHLACHAR, PIER BUILDING AND PIER INCLUDING REVETMENT WALLS AND RAILINGS\",C,04/05/2006,STIRLING,BUCHANAN";
String end2= "";
if(line.contains("\"")){
int pos = line.indexOf("\"");
String firstPart = line.substring(0, 6);
String temp = line.substring(pos+1);
int pos2 = temp.indexOf("\"");
String secondPart = temp.substring(pos2+1);
String temp2 = temp.substring(0, pos2-1);
String temp3 = temp2.replace(",", "");
String end = firstPart.concat(temp3);
end2 = end.concat(secondPart);
}
String[] output = end2.split(",");
for(int i = 0; i < output.length; i++){
System.out.println(output[i] + " ");
}
但令我疑惑的是:如果这是一个很好的编程实践,或者我觉得如何做到这一点太复杂了?由于它的1500行文件和每一行都必须进行检查。即使这样,仍然可能存在其他需要处理的违规行为。
顺便说一句,这样做的目的是所有行都应该以6个元素的数组结束,不多也不少。
我应该记住什么样的参数/想法来处理像这样的文件/行?