Java: 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 substring. L'index commence à 0? Si je commence par 0, e
est à l'index 4 mais char i
est à 7 donc la sortie serait ersi
.
10 réponses
0: U
1: n
2: i
3: v
4: e
5: r
6: s
7: i
8: t
9: y
L'index de départ est inclus
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
. Pensez-y comme des positions dans la chaîne plutôt que des caractères réels.
0 1 2 3 4 5 6 7 8 9
u n i V E R s i t y
s e
t n
a d
r
t
La sous-chaîne commence au niveau spécifié
beginIndex
et s'étend à la 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 toi, je n'ai pas trouvé que ça venait naturellement. Normalement, je dois encore me rappeler que
-
La Longueur de la chaîne renvoyée est
LastIndex-firstIndex
-
Que vous pouvez utiliser la longueur de la chaîne comme lastIndex même s'il n'y a pas de caractère là-bas et essayer de le référencer lancerait une Exception
Donc
"University".substring(6, 10)
Renvoie la chaîne de 4 caractères " sity"
même s'il n'y a pas de caractère à la position de 10.
public String substring(int beginIndex, int endIndex)
beginIndex
-l'index de début, inclusivement.
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 y a aussi un autre type de méthode substring()
:
public String substring(int beginIndex)
beginIndex
-l'index de début, inclusivement.
Renvoie une sous-chaîne commençant par beginIndex
jusqu'à 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: "lo Monde"
De 3 au dernier index.
Pour la sous-chaîne (startIndex, endIndex), startIndex est inclusif et endIndex est exclusif. Le startIndex et endIndex sont très confus. Je comprendrais substring (startIndex, length) pour m'en souvenir.
La sous-chaîne commence à, et inclut le caractère à l'emplacement du premier nombre donné et va à, mais n'inclut pas le caractère au dernier nombre 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
L'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? Je suppose qu'il était plus facile de se rappeler que les deux sont inclusifs, plutôt que de se souvenir que le début est inclusif et que la fin est exclusive.