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.


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


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.


8

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


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.


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.


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.


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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.