有一个字符串数组row[]
,我想在它们之间放置分隔符。我想保留订单,例如
row[0] was "Gold",
row[1] was "Costly",
row[2] was NULL,
row[3] was NULL,
row[5] was "Bronze",
row[6] was "Cheaper",
我想在设置分隔符时保留NULL值,比如说字符串数组中的\ t。所以我的新字符串应该看起来像
'Gold \t Costly \t \t Bronze \t Cheaper'.
我可以做类似
的事情'System.out.println(row[0] + "\t" + row[1] +"\t" +row[2]+.......'
但问题是字符串数组的长度超过120。有一个更好的方法吗? (我不能使用for循环,因为我将它放在带有其他东西的映射器中)。如果是String.format(),你能告诉我怎么做吗?
答案 0 :(得分:3)
此标准API中没有任何内容。有几个第三方软件包有一个“连接”方法,可以做你想要的(然后是一些)。一个特别好的是Guava的Joiner
。 (根据蒂姆的评论,StringUtils.join()
库中的Apache Commons Lang方法也可以完成您所需的一切。)使用一个好的第三方库可以解决很多这些编码问题。
如果您不希望(或不允许)使用第三方库,您可以编写一个方法来使用您选择的分隔符连接元素:
public static String join(String[] data, String delimiter) {
StringBuilder sb = new StringBuilder();
if (data != null && data.length > 0) {
for (String item : data) {
sb.append(String.valueOf(item);
sb.append(delimiter);
}
// chop off the last delimiter
sb.setLength(sb.length() - delimiter.length());
}
return sb.toString();
}
然后,您可以使用join()
在任何地方使用字符串连接表达式。例如:
System.out.println(join(row, "\t"));
答案 1 :(得分:1)
您应该使用for
循环:
String[] row = {"123",null,"ABC"};
StringBuilder sb = new StringBuilder();
for(String s : row){
if(s != null){
sb.append(s);
}
sb.append("\t");
}
System.out.println("Your result string : "+sb.toString());
打印:
Your result string : 123 ABC