0

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
}
4

3 に答える 3

8

コンストラクターを使用します

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 )
于 2012-08-21T13:22:31.157 に答える
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ビットの多くを取り除くことができることに注意してください。

于 2012-08-21T13:21:25.507 に答える
0
public StringBuilder append(char str[], int offset, int len) {
于 2012-08-21T13:23:06.163 に答える