Marquer problème en Java avec le séparateur “. ”
J'ai besoin de diviser un texte en utilisant le séparateur de ". "
. Par exemple: je veux cette chaîne :
Washington is the U.S Capital. Barack is living there.
À être coupé en deux parties:
Washington is the U.S Capital.
Barack is living there.
Voici mon code :
//Initialize the tokenizer
StringTokenizer tokenizer = new StringTokenizer("Washington is the U.S Capital. Barack is living there.", ". ");
while (tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
Et la sortie est malheureusement :
Washington
is
the
U
S
Capital
Barack
is
living
there
Quelqu'un peut m'expliquer ce qu'il se passe?
OriginalL'auteur poiuytrez | 2010-06-04
Vous devez vous connecter pour publier un commentaire.
Ne pas utiliser
StringTokenizer
; c'est un héritage de la classe. Utilisationjava.util.Scanner
ou tout simplementString.split
à la place.Cette affiche:
Noter que
split
etScanner
sont "regex"(expressions régulières), et depuis.
est un spécial regex "méta-caractère", il a besoin d'être échappés avec\
. À leur tour, car\
est lui-même un caractère d'échappement pour Java littéraux de chaîne, vous devez écrire"\\. "
comme délimiteur.Cela peut sembler compliqué, mais il est vraiment pas.
split
etScanner
sont de beaucoup supérieur à l'StringTokenizer
, et regex n'est pas si difficile à ramasser.Expressions régulières tutoriels
Questions connexes
API Liens
java.util.StringTokenizer
StringTokenizer
est un héritage de la classe qui est retenu pour des raisons de compatibilité, même si son utilisation est déconseillée dans le nouveau code. Il est recommandé à toute personne à la recherche de cette fonctionnalité utiliser lesplit
méthode deString
ou lajava.util.regex
paquet.java.util.Scanner
String[] Chaîne de caractères.split
Mais quel est le problème?
Le problème est que
StringTokenizer
prend chaque personnage dans le délimiteur de chaîne de caractères comme une personne délimiteurs, c'est à dire PAS l'ensemble de laString
lui-même.À partir de l'API:
OriginalL'auteur polygenelubricants
Votre StringTokenizer constructeur prend le séparateur ". ", qui correspond à point ou l'espace comme délimiteurs.
OriginalL'auteur krock
Essayez d'éliminer le vide de l'espace après le point dans le séparateur. Utiliser ce lieu.
oups.. désolé, je n'avais pas remarqué 🙂
OriginalL'auteur bdhar
StringTokenizer(String str, String delim, boolean returnValue) : crée StringTokenizer avec chaîne spécifiée, séparateur et returnValue.
Si une valeur de retour est true, séparateur de caractères sont considérés comme des pions. Si elle est fausse, alors les caractères délimiteurs servir à séparer les jetons.
OriginalL'auteur Jitendra