如何在空格分隔的字符串的末尾或开头插入额外的空格

时间:2018-02-04 19:03:00

标签: java

我想表示[1,2,3,4]列表"\"1 2 3 4\""。请注意转义的报价以及它们与相邻数字之间缺少空格。我怎样才能做到这一点?这是一件非常简单的事情,但由于我正在使用TreeSet而不是数组,因此它很棘手。这甚至可以使用for循环,还是必须使用TreeSet迭代器?

public String positionsRep(TreeSet<Integer> positions){
    StringBuilder s = new StringBuilder("");
    s.append("\"");
    for(Integer pos: positions){
        posStr = Integer.toString(pos);
        s.append(posStr);
        s.append(" ");
    }   
    s.append("\"");
    return s.toString();
}  

2 个答案:

答案 0 :(得分:2)

只是区别对待第一个数字:

public String positionsRep(TreeSet<Integer> positions){
    StringBuilder s = new StringBuilder("");
    s.append("\"");
    boolean isFirst = true;
    for(Integer pos: positions){
        if (!isFirst) {
            s.append(" ");
        }
        posStr = Integer.toString(pos);
        s.append(posStr);
        isFirst = false;
    }   
    s.append("\"");
    return s.toString();
}

但是,最好只使用StringJoiner代替StringBuilder,如果使用(" ", "\"", "\"")进行初始化,它会完全符合您的要求。这看起来应该是这样的:

StringJoiner sj = new StringJoiner(" ", "\"", "\"");
for (Integer i: positions) {
    sj.add(i.toString());
}
String result = sj.toString();

甚至更短的使用流:

import java.util.stream.Collectors;

positions.stream().map(Integer::toString).collect(Collectors.joining(" ", "\"", "\""));

答案 1 :(得分:0)

您可以从该TreeSet生成一个数组,并使用字符串属性通过空格连接元素,然后添加您需要的特殊字符

示例:

<option value="">----------------</option>
<option value="0">1111111111</option>
<option value="1">1212121212</option>