La méthode de type String de Java a une méthode split
. En utilisant cette méthode, par exemple, comme suit, vous pouvez diviser une chaîne de caractères par n'importe quel caractère et générer un tableau avec les éléments divisés.
example1.java
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
//La chaîne de caractères que vous souhaitez créer un tableau
String str = "Pomme,Orange,banane,pastèque,melon";
//Spécifiez le caractère à utiliser pour la division
String[] strArray = str.split(",");
for(int i = 0; i < strArray.length; i++) {
System.out.println((i + 1) + ":" + strArray[i]);
}
}
}
Lorsque vous exécutez cette source
1: pomme 2: Mikan 3: banane 4: pastèque 5: Melon
Le résultat est obtenu.
Maintenant, la méthode split
, mais que faire si les caractères utilisés pour le fractionnement sont consécutifs comme dans l'exemple suivant?
example2.java
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
//La chaîne de caractères que vous souhaitez créer un tableau
String str = "Pomme,Orange,,,";
//Spécifiez le caractère à utiliser pour la division
String[] strArray = str.split(",");
for(int i = 0; i < strArray.length; i++) {
System.out.println((i + 1) + ":" + strArray[i]);
}
}
}
Lorsque vous exécutez cette source
1: pomme 2: Mikan 3: 4: 5:
Je m'attendais à obtenir le résultat, mais ce n'était pas le cas.
1: pomme 2: Mikan
A été affiché. En d'autres termes, cela signifie que la taille du tableau obtenu dans ʻexample2.javasera de 2 au lieu de 5. Dans l'exemple ci-dessus, je pensais que la taille du tableau serait de 5 si j'utilisais la méthode
split`, mais quand je l'ai réellement utilisée dans mon entreprise, ce n'était pas comme prévu et j'ai été déçu.
Alors, comment ai-je obtenu ce que j'attendais? En conclusion, spécifiez -1 (nombre négatif) comme deuxième argument de la méthode split
comme indiqué dans l'exemple ci-dessous.
example3.java
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
//La chaîne de caractères que vous souhaitez créer un tableau
String str = "Pomme,Orange,,,";
//Dans le deuxième argument-Précisez 1
String[] strArray = str.split(",", -1);
for(int i = 0; i < strArray.length; i++) {
System.out.println((i + 1) + ":" + strArray[i]);
}
}
}
En spécifiant -1 comme deuxième argument,
1: pomme 2: Mikan 3: 4: 5:
J'ai eu le résultat et j'ai pu obtenir la taille du tableau par le nombre divisé par des virgules.
En résolvant ce problème, j'ai lu le Document officiel et j'ai trouvé deux choses. J'ai pu apprendre.
La première est que la méthode split
n'est pas fractionnée par la chaîne de caractères spécifiée par le premier argument, mais correctement par l '** expression régulière ** spécifiée par le premier argument.
J'étais convaincu qu'elle serait divisée par la chaîne de caractères spécifiée, mais j'ai réalisé qu'il était possible de diviser la chaîne de caractères dans des conditions plus compliquées en utilisant pleinement les expressions régulières.
La seconde consiste à spécifier un nombre négatif dans le deuxième argument de la méthode split
lorsque les chaînes de caractères que vous souhaitez fractionner sont continues comme dans l'exemple ci-dessus.
Le deuxième argument de la méthode «split» représente le seuil de fractionnement. Si le deuxième argument n'est pas spécifié, il sera traité de la même manière que si 0 était spécifié pour le deuxième argument. Dans ce cas, si le résultat de la division dans l'ordre est un caractère vide, il sera ignoré.
Par conséquent, dans ʻexample2.java`, la taille du tableau divisé est maintenant de 2 au lieu de 5.
Pour éviter cela, j'ai trouvé qu'il était nécessaire de spécifier un nombre négatif pour le deuxième argument afin que le nombre de divisions soit illimité et que les caractères vides ne soient pas supprimés.
J'ai pu réaffirmer l'importance de me référer à la documentation officielle pour résoudre ce problème. Et j'ai pu réaliser l'importance d'utiliser la méthode après avoir compris exactement quel type de traitement est effectué. J'espère que cet article aide quelqu'un.
Recommended Posts