在Java中组合数组的其余部分

时间:2014-07-09 10:07:54

标签: java arrays

我需要能够在java中组合其余的数组来改变它的长度。 我所知道的等价物是Python中的一个列表,您可以在其中输入list[1:]以显示列表的其余部分。我如何在String formattedOutput = (user+" : "+message+parts[3:]);进行此操作,同时在列表的每个部分之间添加空格?

3 个答案:

答案 0 :(得分:1)

好吧,考虑到语法并不真正允许,你自己需要从给定的索引迭代到数组的末尾,然后进行追加。考虑到您正在尝试创建所有元素的String,您应该使用StringBuffer而不仅仅是串联。以下示例应该有效:

StringBuffer sb = new StringBuffer();
sb.append(user);
sb.append(" : ");
for(int i = 3; i < parts.length; i++)
{
     sb.append(parts[i]);
     if(i < parts.length-1) //if you don't want a space after the last part
     {
         sb.append(" ");
     }
}
String formattedOutput = sb.toString();
System.out.println(formattedOutput);

当然,您可以创建自己的合并函数,它采用如下索引:

    StringBuffer sb = new StringBuffer();
    sb.append(user);
    sb.append(" : ");
    appendFromArray(sb, parts, 3);
    String formattedOutput = sb.toString();
    System.out.println(formattedOutput);
}

private void appendFromArray(StringBuffer sb, String[] array, int index)
{
    for(int i = index; i < array.length; i++)
    {
         sb.append(array[i]);
         if(i < array.length-1) //if you don't want a space after the last part
         {
             sb.append(" ");
         }
    }
}

答案 1 :(得分:1)

如果parts数组是一个String数组,你可以创建一个执行它的方法。例如:

private String stringFromArray(Array array, int start){
    String result = "";
    for(int i = start; i < array.length; i++)
        result += (" " + array[i]); //Make sure you have a white space before the array[i];
    return result;
}

然后将其称为

String formattedOutput = (user+" : "+ message + stringFromArray(parts, 3));

答案 2 :(得分:0)

如果您使用小型阵列或性能不是问题,则可以使用arraycopy(),然后使用Arrays.toString()。我可能不会在生产环境中推荐这个,但对于某些测试可能没问题:

int[] array = { 1, 2, 3, 4, 5 };
int size = 3;
int startIdx = 2;

int[] arrayPart = new int[size];
System.arraycopy(array, startIdx, arrayPart, 0, size);

System.out.println("Message: " + Arrays.toString(arrayPart).replaceAll("[\\[\\]]", ""));

结果:

  

消息:3,4,5