0

有一个字符串数组,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(),你能告诉我怎么做吗?

4

2 回答 2

3

标准 API 中对此没有任何内容。有几个第三方包有一个“加入”方法,可以做你想要的(然后是一些)。一个特别好的是番石榴的Joiner。(根据 Tim 的评论,Apache Commons LangStringUtils.join()库中的方法也可以满足您的所有需求。)使用好的第三方库可以解决很多这些编码问题。

如果您不想(或不允许)使用第三方库,您可以编写一个方法来使用您选择的分隔符连接元素:

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"));
于 2013-07-30T04:34:25.397 回答
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 
于 2013-07-30T04:34:53.783 回答