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

取出字符数组的一部分并将其转换为字符串-Java,java,string,char,type-conversion,Java,String,Char,Type Conversion,在Java中,是否有一个预制方法可以用来获取字符数组的一些选定索引,将这些索引定义的术语粘在一起并作为字符串返回?我在这里寻找方法的原因是,我希望避免创建另一个数组来保存所选值。我要找的是这样的东西: public String charArrayToString(char[] array, int startingIndex, int lastIndex) { // ignore any index that is outside of the startingIndex -

在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
}
听起来你想要:

return new String(array, startingIndex, lastIndex + 1 - startingIndex);
。。。对
开始索引
最后索引
进行了一些边界检查,例如

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位。

我将使用构造函数

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 )

最后一个参数是count,而不是end-like子字符串;)@AmitD:我更喜欢验证方法本身中的参数,因为这样可以给出更清晰的消息。但是,是的。我想这和新字符串方法的检查一样足够了-
如果(startingIndex>=0&&0)你能添加一个如何使用此方法的示例吗?如果OP想将结果添加到字符串中,这将是最好的选择。@PeterLawrey:现在谁在乎Jon Skeet回答了这个问题:)Jon Skeet经常回答问题,但你仍然可以获得一些声誉我认为你需要一个+1在这里,因为问题似乎要包括lastIndex。
public StringBuilder append(char str[], int offset, int len) {