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
.
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
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'indexendIndex - 1
. Ainsi la longueur de la sous-chaîne estendIndex-beginIndex
.
Voir le javadoc . C'est un index inclusif pour le premier argument et exclusif pour le second.
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.
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.
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.
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.
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é.
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
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.