web-dev-qa-db-fra.com

plage d'index de sous-chaîne

Code:

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

Sortie: ers

Je ne comprends pas vraiment comment fonctionne la méthode de la sous-chaîne. Est-ce que l'index commence à 0? Si je commence par 0, e est à l'index 4 mais char i est à 7 et le résultat sera donc ersi.

63
Artjom Zabelin

0: U

1: n

2: i

3: v

4: e

5: r

6: s

7: je

8: t

9: y

L'index de départ est inclusif

L'index final est exclusif

Lien Javadoc

127
Axel Fontaine

Les deux sont basés sur 0, mais le début est inclusif et la fin est exclusive. Cela garantit que la chaîne résultante est de longueur start - end

Pour faciliter la vie à l'opération substring, imaginez que les caractères sont entre les index.

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"

Citer les docs :

La sous-chaîne commence à la spécifiée beginIndex et s'étend au caractère à l'index endIndex - 1. Ainsi la longueur de la sous-chaîne est endIndex-beginIndex.

12
marcog

Voir le javadoc . C'est un index inclusif pour le premier argument et exclusif pour le second.

10
Matt

Comme vous, je n'ai pas trouvé que cela venait naturellement. Normalement, je dois toujours me rappeler que

  • la longueur de la chaîne retournée est 

    lastIndex - firstIndex

  • que vous pouvez utiliser la longueur de la chaîne comme lastIndex même s’il n’y a aucun caractère et qu’il essaie de faire référence à cela jetterait une exception

alors 

"University".substring(6, 10)

renvoie la chaîne de 4 caractères "sity" même s'il n'y a pas de caractère en position 10.

5
peter.murray.rust

Oui, l'index commence à zéro (0). Les deux arguments sont startIndex et endIndex, où, selon la documentation:

La sous-chaîne commence au beginIndex spécifié et s'étend au caractère à l'index endIndex - 1.

Voir ici pour plus d'informations.

2
Richard H
public String substring(int beginIndex, int endIndex)

beginIndex— l'index de début, inclus.

endIndex— l'index de fin, exclusif.

Exemple:

public class Test {

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

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

Sortie: "lo Wo" 

De 3 à 7 index.

Il existe aussi un autre type de méthode substring():

public String substring(int beginIndex)

beginIndex— l'index de début, inclus ..__, renvoie une sous-chaîne commençant par beginIndex à la fin de la chaîne principale.

Exemple:

public class Test {

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

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

Sortie: "le monde" 

De 3 au dernier index.

2
Ratul Bin Tazul

Pour la sous-chaîne (startIndex, endIndex), startIndex est inclusif et endIndex est exclusif. StartIndex et endIndex sont très déroutants ... Je comprendrais la sous-chaîne (startIndex, longueur) pour s'en souvenir. 

1
elliptic00

La sous-chaîne commence à et inclut le caractère à l'emplacement du premier numéro donné et va à, mais n'inclut pas le caractère au dernier numéro donné.

1
Brett H
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));
    }
}

Sortie:

length is: 31

Substring is: programming paradigm
1
Prince Gera

EndIndex est un terme très déroutant. Je suppose que le motif était de garder la longueur de la nouvelle chaîne à endIndex - startIndex. Mais alors quoi? J'imagine qu'il était plus facile de se rappeler que les deux sont inclusifs, plutôt que de se rappeler que le début est inclusif et que la fin est exclusive.

0
apadana