Le découpage d'une chaîne à chaque n-ième caractère
En JavaScript c'est la façon dont nous pouvons diviser une chaîne à tous les 3-ème caractère
"foobarspam".match(/.{1,3}/g)
Je suis à essayer de comprendre comment le faire en Java. Les pointeurs?
- Je ne voudrais pas utiliser les Regex pour cette tâche.
- ok. Que suggéreriez-vous alors?
- Quelque chose comme Simon de réponse.
Vous devez vous connecter pour publier un commentaire.
Vous pourriez le faire comme ceci:
qui produit:
La regex
(?<=\G...)
correspond à une chaîne vide qui a la dernier match (\G
), suivie par trois personnages (...
) avant il ((?<= )
)\G
, et Python ne pas se diviser sur une expression régulière qui correspond à zéro des personnages. Mais alors, si Java a une "tous les matches" méthode comme toute autre langue, vous n'aurait pas eu à inventer ce truc, en premier lieu, @Bart. 😉[123, 4567890]
comme résultat 🙁Java ne fournit pas très complet fractionnement des services publics, de sorte que le Goyave bibliothèques faire:
Découvrez la Javadoc pour Splitter; il est très puissant.
substring
méthode est en fait assez intelligent pour utiliser le parent de la chaîne dechar[]
pour les données; voir cette réponse pour plus de détails.Comme un complément à Bart Kiers de la réponse, je tiens à ajouter que c'est possible au lieu d'utiliser les trois points
...
dans l'expression regex qui sont représentatifs de trois caractères que vous pouvez écrire.{3}
qui a la même signification.Puis le code devrait ressembler à la suivante:
Avec cela, il serait plus facile de modifier la longueur de la chaîne et de la création d'une fonction est maintenant raisonnable avec une variable d'entrée longueur de la chaîne. Cela pourrait être fait ressembler à la suivante:
Un exemple dans IdeOne: http://ideone.com/rNlTj5
En Retard.
Qui suit est un bref de mise en œuvre à l'aide de Java8 ruisseaux, en une seule ligne:
De sortie:
Cette réponse tardive, mais je suis en train de monter là-bas de toute façon pour les nouveaux programmeurs à voir:
Si vous ne souhaitez pas utiliser des expressions régulières, et ne souhaitent pas recourir à un tiers de la bibliothèque, vous pouvez utiliser cette méthode au lieu de cela, ce qui prend entre
89920 et 100113 nanosecondes dans un 2.80 GHz CPU (moins d'un millième de seconde). Ce n'est pas aussi jolie que Simon Nickerson l'exemple, mais il fonctionne:
Vous pouvez aussi diviser une chaîne à chaque n-ième caractère et les mettre chacun, dans chaque index d'une Liste :
Ici j'ai fait une liste de Chaînes de caractères nommée Séquence :
Puis je suis fondamentalement de fractionnement de la Chaîne "KILOSO" par tous les 2 mots. Donc, " KI " 'LO' " SI " serait à intégrer dans le séparer de l'indice de la Liste appelée Séquence.
Donc, quand je suis en train de faire :
Elle doit imprimer :
pour vérifier que je peux écrire :
il apparaîtra à l'impression :