连接整数由Pipe和':'分隔的值使用java

时间:2010-08-22 17:19:17

标签: java string-concatenation

我有ValueA和ValueB(int类型)的数组。我正在使用for循环从数组中读取每个值。 我想在单个String中连接所有值。这些值应该是这样的形式

ValueA1":"valueB1"|"ValueA2":"valueB2"|"ValueA3":"valueB3"|"ValueA4":"valueB4"|"....  

我想用Java编写这个,请帮我一些代码..

3 个答案:

答案 0 :(得分:2)

你可以试试这样的事情

int[] valueA = methodWhichFillsA();
int[] valueB = methodWhichFillsB();
StringBuilder sb = new StringBuilder();
int maxSize = Math.max(valueA.length, valueB.length);
for(int i = 0; i < maxSize; i++){
    if(i > 0)
        sb.append("|");

    if(i < valueA.length)
        sb.append(valueA[i]);

    sb.append(":");

    if(i < valueB.length)
        sb.append(valueB[i]);
}
System.out.println(sb.toString());

这将评估valueA和valueB之间的最大数组的大小,并在此大小上循环。如果元素存在则打印出来。 第一个if用于添加分隔符,如果它是第一次迭代则不需要“|”

答案 1 :(得分:1)

假设阵列大小不同,此解决方案会将它们拼接在一起,直到较短的阵列结束:

StringBuilder sb = new StringBuilder();
for(int i = 0; i < Math.min(arr1.length, arr2.length); i++){
    sb.append( arr1[i] ).append("\":\"").append( arr2[i] ).append("\"|\"");
}
System.out.println(sb.toString());

答案 2 :(得分:1)

这是一种不同的方式,它使用Guava

private String test(int[] a, int[] b) {

    List<Integer> al = Lists.newArrayList();
    List<Integer> bl = Lists.newArrayList();
    for (Integer ai : a) {
        al.add(ai);
    }
    for (Integer bi : b) {
        bl.add(bi);
    }

    List<String> sets = Lists.newArrayList();
    Iterator<Integer> itera = al.iterator();
    Iterator<Integer> iterb = bl.iterator();
    while(itera.hasNext() && iterb.hasNext()) {
        sets.add(itera.next()+":"+iterb.next());
    }

    return Joiner.on("|").join(sets);

}

我很惊讶地找不到列出方法的原始数组。如果你能想到一个优雅的方法,除了把它拉到另一个方法之外,这个代码可以变得更干净。