web-dev-qa-db-ja.com

部分文字列のインデックス範囲

コード:

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になります。

67
Artjom Zabelin

0:U

1:n

2:私

3:v

4:e

5:r

6:s

7:私

8:t

9:y

開始インデックスは包括的です

終了インデックスは排他的です

Javadocリンク

130
Axel Fontaine

両方とも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です。

13
marcog

javadoc を参照してください。これは、最初の引数の包括的インデックスであり、2番目の引数の排他的インデックスです。

8
Matt

あなたのように、私はそれが自然に来たことを見つけませんでした。私は通常、

  • 返される文字列の長さ

    lastIndex-firstIndex

  • 文字がない場合でも文字列の長さをlastIndexとして使用でき、参照しようとすると例外がスローされる

そう

"University".substring(6, 10)

10文字目に文字がない場合でも、4文字の文字列「sity"」を返します。

4
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から最後のインデックスまで。

3
Ratul Bin Tazul

はい、インデックスはゼロ(0)から始まります。 2つの引数はstartIndexとendIndexであり、ドキュメントによると:

部分文字列は、指定されたbeginIndexで始まり、インデックスendIndex-1の文字まで拡張されます。

詳細については、 here を参照してください。

2
Richard H

部分文字列は、指定された最初の数字の位置にある文字を含み、そこに移動しますが、指定された最後の数字の文字を含みません。

1
Brett H

EndIndexは非常にわかりにくい用語です。動機は、新しい文字列の長さをendIndex-startIndexに保つことだったと思います。しかし、だから何?開始が包括的で終了が排他的であることを覚えるよりも、両方が包括的であることを覚える方が簡単だったと思います。

0
apadana

Substring(startIndex、endIndex)の場合、startIndexは包括的で、endIndexは排他的です。 startIndexとendIndexは非常に紛らわしいです。それを覚えておくには、substring(startIndex、length)を理解します。

0
elliptic00
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
0
Prince Gera