String s = 'muniganesh'
Java 文字列ではインデックスが 0 から始まるため、の値を出力するs.subString(1, 2)
と、出力は'u'
になります。しかし、インデックス位置 1 から始まるように文字列を変更する必要があります。
5 に答える
本当にやりたい場合は、メソッドを書くことができます:
public static String substring(String str, int beginIndex, int endIndex) {
return str.substring(beginIndex - 1, endIndex - 1);
}
しかし、そうしないことを強くお勧めします。なぜなら、自分のものとs.substring()
自分のものを混同してsubstring()
、1 つのエラーで失敗する可能性があるからです。Java が文字列を処理する方法に慣れて、s.substring()
. 他の多くの一般的な言語では、Java のように文字列インデックスが 0 から始まります。
両方の #substring(start, end) 引数を 0 から始まるインデックス (または必要に応じて 1 から始まるインデックス) として処理する独自のユーティリティ メソッドを作成することもできますが、@irrelephant が示唆していないため、慣れる必要があります。 Java がこれらの特殊なケースをどのように処理するか: 最初の引数はzero-basedで、2 番目の引数はone-basedです。String#substring
は唯一の例ではなく、 もありStringBuilder#delete
、もっとあるはずです。
考えられる動機は、追加のインクリメントなしで開始位置に長さを追加するだけで終了位置を計算することです。例えば:
String source = "In Java world, end position index may be one-based";
int indexOfP = source.indexOf('p');
String result = source.substring(indexOfP, indexOfP + 8);
System.out.println(result); // prints 'position'
これは最良の例ではなく、真の動機は異なるかもしれませんが、この特異性について私が覚えている方法です。
試す
myString = myString.substring(1); // will give "uniganesh"
Java 文字列インデックスは o から始まり、文字列長 -1 までです。
あなたが使用する場合
文字列 s = "ムニガネーシュ";
s = s.substring(1,2);// output u
System.out.println(""+ s.substring(1)); //output String s = "muniganesh";
Java配列または文字列(および他のほとんどの言語の配列)のインデックスは0から始まります。文字列を1つ長くして最初のインデックスを使用しないか、1からstring.lengthまでのインデックスを使用して、実際にインデックスを作成するときに1を減算します。文字列に。