コード:
public class Test {
public static void main(String[] args) {
String str = "University";
System.out.println(str.substring(4, 7));
}
}
出力:ers
私は、サブストリングメソッドがどのように機能するかを本当に理解していません。インデックスは0から始まりますか? 0で始まる場合、e
はインデックス4にありますが、char i
は7にあるため、出力はersi
になります。
両方とも0から始まりますが、開始は包括的で終了は排他的です。これにより、結果の文字列の長さがstart - end
になります。
substring
操作を簡単にするために、文字がbetweenインデックスであると想像してください。
0 1 2 3 4 5 6 7 8 9 10 <- available indexes for substring
u n i v E R S i t y
↑ ↑
start end --> range of "E R S"
docs の引用:
部分文字列は、指定された
beginIndex
で始まり、インデックスendIndex - 1
の文字まで拡張されます。したがって、サブストリングの長さはendIndex-beginIndex
です。
javadoc を参照してください。これは、最初の引数の包括的インデックスであり、2番目の引数の排他的インデックスです。
あなたのように、私はそれが自然に来たことを見つけませんでした。私は通常、
返される文字列の長さは
lastIndex-firstIndex
文字がない場合でも文字列の長さをlastIndexとして使用でき、参照しようとすると例外がスローされる
そう
"University".substring(6, 10)
10文字目に文字がない場合でも、4文字の文字列「sity"
」を返します。
public String substring(int beginIndex, int endIndex)
beginIndex
—開始インデックス、包括的。
endIndex
-排他的な終了インデックス。
例:
public class Test {
public static void main(String args[]) {
String Str = new String("Hello World");
System.out.println(Str.substring(3, 8));
}
}
出力:「lo Wo」
3〜7インデックス。
また、別の種類のsubstring()
メソッドがあります。
public String substring(int beginIndex)
beginIndex
—開始インデックス、包括的。 beginIndex
からメイン文字列の末尾までの部分文字列を返します。
例:
public class Test {
public static void main(String args[]) {
String Str = new String("Hello World");
System.out.println(Str.substring(3));
}
}
出力:「lo World」
3から最後のインデックスまで。
はい、インデックスはゼロ(0)から始まります。 2つの引数はstartIndexとendIndexであり、ドキュメントによると:
部分文字列は、指定されたbeginIndexで始まり、インデックスendIndex-1の文字まで拡張されます。
詳細については、 here を参照してください。
部分文字列は、指定された最初の数字の位置にある文字を含み、そこに移動しますが、指定された最後の数字の文字を含みません。
EndIndexは非常にわかりにくい用語です。動機は、新しい文字列の長さをendIndex-startIndexに保つことだったと思います。しかし、だから何?開始が包括的で終了が排他的であることを覚えるよりも、両方が包括的であることを覚える方が簡単だったと思います。
Substring(startIndex、endIndex)の場合、startIndexは包括的で、endIndexは排他的です。 startIndexとendIndexは非常に紛らわしいです。それを覚えておくには、substring(startIndex、length)を理解します。
public class SubstringExample
{
public static void main(String[] args)
{
String str="OOPs is a programming paradigm...";
System.out.println(" Length is: " + str.length());
System.out.println(" Substring is: " + str.substring(10, 30));
}
}
出力:
length is: 31
Substring is: programming paradigm