取出一部分char数组并将其转换为字符串--Java

时间:2012-08-21 13:20:03

标签: java string char type-conversion

在Java中,是否有一个预制方法可以用来获取一些字符数组的选定索引,将这些索引定义的术语粘在一起并将其作为字符串返回?我在这里寻找方法的原因是我想避免创建另一个数组来保存我选择的值。我正在寻找的东西是这样的:

public String charArrayToString(char[] array, int startingIndex, int lastIndex) {
        // ignore any index that is outside of the startingIndex - lastIndex range
        // turn array[startingIndex], array[startingIndex + 1] ... array[lastIndex] into a string
}

3 个答案:

答案 0 :(得分:7)

听起来像你想要的那样:

return new String(array, startingIndex, lastIndex + 1 - startingIndex);

...已对startingIndexlastIndex进行了一些边界检查,例如

startingIndex = Math.max(startingIndex, 0);
lastIndex = Math.min(lastIndex, array.length - 1);
if (startingIndex > lastIndex) {
    // Return empty string? Throw an exception?
}
return new String(array, startingIndex, lastIndex + 1 - startingIndex);

请注意,如果您将上界独占改为 - 就像大多数Java API一样 - 您可以摆脱很多这些+1和-1位。

答案 1 :(得分:7)

我会使用构造函数

public String charArrayToString(char[] array, int startingIndex, int lastIndex) {
    return new String(array, startIndex, lastIndex - startIndex + 1);
}

根据您对结果的处理方式,更好的解决方案可能是使用StringBuilder.append

char[] coords = "000175001022".toCharArray();

StringBuilder sb = new StringBuilder();
sb.append("( ");
sb.append(coords, 0, 6);
sb.append(", ");
sb.append(coords, 6, 6);
sb.append(" )");
System.out.println(sb); // prints ( 000175, 001022 )

答案 2 :(得分:0)

public StringBuilder append(char str[], int offset, int len) {