Teilstring-Indexbereich

74

Code:

public class Test {
    public static void main(String[] args) {
        String str = "University";
        System.out.println(str.substring(4, 7));
    }   
}

Ausgabe: ers

Ich verstehe nicht wirklich, wie die Teilstring-Methode funktioniert. Beginnt der Index bei 0? Wenn ich mit 0 beginne, eist es bei Index 4, aber char iist bei 7, also wäre die Ausgabe ersi.

Upvote
quelle
Wenn Sie den Anfangsindex als str.length () setzen, wird keine IndexOutofBounds-Vervollständigung ausgelöst. Es wird nur eine leere Zeichenfolge zurückgegeben.
आनंद

Antworten:

142

0: U.

1: n

2: i

3: v

4: e

5: r

6: s

7: i

8: t

9: y

Startindex ist inklusive

Der Endindex ist exklusiv

Javadoc Link

Axel Fontaine
quelle
2
danke, genau das fand ich informativ; beginIndex - der Anfangsindex einschließlich. endIndex - der exklusive Endindex.
Upvote
Man denke nur an es als char Array mit Base 0 als alle anderen Arrays, und dass das zweite Argument ist die Stoppposition , anstatt die Endposition.
Henrik Erlandsson
14

Beide sind 0-basiert, aber der Anfang ist inklusive und das Ende ist exklusiv. Dies stellt sicher, dass die resultierende Zeichenfolge lang ist start - end.

substringStellen Sie sich vor, Zeichen befinden sich zwischen Indizes, um die Bedienung zu vereinfachen .

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"

Zitieren der Dokumente :

Die Teilzeichenfolge beginnt an der angegebenen Stelle beginIndexund erstreckt sich bis zum Zeichen am Index endIndex - 1. Somit ist die Länge des Teilstrings endIndex-beginIndex.

Moinudin
quelle
8

Siehe den Javadoc . Es ist ein integrativer Index für das erste Argument und exklusiv für das zweite.

Matt
quelle
4

Wie du fand ich es nicht natürlich. Normalerweise muss ich mich noch daran erinnern

  • Die Länge der zurückgegebenen Zeichenfolge beträgt

    lastIndex - firstIndex

  • dass Sie die Länge der Zeichenfolge als lastIndex verwenden können, obwohl dort kein Zeichen vorhanden ist und der Versuch, darauf zu verweisen, eine Ausnahme auslösen würde

damit

"University".substring(6, 10)

gibt die 4-stellige Zeichenfolge zurück " sity", obwohl sich an Position 10 kein Zeichen befindet.

peter.murray.rust
quelle
3
public String substring(int beginIndex, int endIndex)

beginIndex- Der Anfangsindex einschließlich.

endIndex- der Endindex, exklusiv.

Beispiel:

public class Test {

    public static void main(String args[]) {
        String Str = new String("Hello World");

        System.out.println(Str.substring(3, 8));
    }
 }

Ausgabe: "lo Wo"

Von 3 bis 7 Index.

Es gibt auch eine andere Art von substring()Methode:

public String substring(int beginIndex)

beginIndex- Der Anfangsindex einschließlich. Gibt eine Unterzeichenfolge zurück beginIndex, die bis zum Ende der Hauptzeichenfolge beginnt .

Beispiel:

public class Test {

    public static void main(String args[]) {
        String Str = new String("Hello World");

        System.out.println(Str.substring(3));
    }
}

Ausgabe: "lo World"

Von 3 bis zum letzten Index.

Ratul Bin Tazul
quelle
2

Ja, der Index beginnt bei Null (0). Die beiden Argumente sind startIndex und endIndex, wobei laut Dokumentation:

Die Teilzeichenfolge beginnt am angegebenen beginIndex und erstreckt sich bis zum Zeichen am Index endIndex - 1.

Sehen Sie hier für weitere Informationen.

Richard H.
quelle
1

Die Teilzeichenfolge beginnt bei und enthält das Zeichen an der Stelle der ersten angegebenen Nummer und geht zu, enthält jedoch nicht das Zeichen an der zuletzt angegebenen Nummer.

Brett H.
quelle
0

Für Teilzeichenfolgen (startIndex, endIndex) ist startIndex inklusive und endIndex exklusiv. Der startIndex und der endIndex sind sehr verwirrend. Ich würde Teilzeichenfolge (startIndex, Länge) verstehen, um mich daran zu erinnern.

elliptic00
quelle
0
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));
    }
}

Ausgabe:

length is: 31

Substring is: programming paradigm
Prinz Gera
quelle