Mettre char en java string pour chaque N caractères
J'ai un java chaîne, qui a une longueur variable.
J'ai besoin de mettre la pièce "<br>"
dans la chaîne, de dire chaque 10 caractères.
Par exemple c'est ma chaîne:
`this is my string which I need to modify...I love stackoverlow:)`
Comment puis-je obtenir cette chaîne?:
`this is my<br> string wh<br>ich I nee<br>d to modif<br>y...I love<br> stackover<br>flow:)`
Grâce
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme:
<br>
et de l'insérer uniquement si le caractère courant est unspace
, ou bien déplacer jusqu'au premier caractère d'espace et insérez le<br>
Essayer:
EDIT: Les travaux ci-dessus... la plupart du temps. J'ai été jouer avec et suis tombé sur un problème: depuis il construit un Modèle par défaut en interne, il s'arrête sur des retours à la ligne. pour contourner ce problème, vous devez l'écrire différemment.
et le lecteur malin va ramasser sur un autre problème: vous avez à s'échapper de la regex de caractères spéciaux (comme "$1") dans le texte de remplacement ou vous aurez des résultats imprévisibles.
Je suis aussi curieux et étalonnés cette version à l'encontre de Jon ci-dessus. Celui-ci est plus lente d'un ordre de grandeur (1000 remplacements sur un 60k de fichier pris 4,5 secondes avec cette, 400ms avec son). Sur les 4,5 secondes, seulement environ 0,7 secondes a été fait de construire le Modèle. Plus de il était sur la mise en correspondance/de remplacement n'a même pas ledn lui-même à ce genre d'optimisation.
Normalement, je préfère le moins verbeux solutions de choses. Après tout, plus de code = plus de bugs potentiels. Mais dans ce cas, je dois admettre que Jon version, qui est vraiment l'implémentation naïve (je veux dire que dans un bon moyen)--est nettement mieux.
Vous pouvez utiliser l'expression régulière '..' pour correspondre à chacun des deux personnages et de le remplacer par "$0 " pour ajouter de l'espace:
s = s.replaceAll("..", "$0 ");
Vous pouvez également couper le résultat de supprimer l'espace supplémentaire à la fin.
Alternativement, vous pouvez ajouter une anticipation négatif affirmation d'éviter d'ajouter de l'espace à la fin de la chaîne:
s = s.replaceAll("..(?!$)", "$0 ");
Par exemple:
String s = "23423412342134";
s = s.replaceAll("....", "$0<br>");
System.out.println(s);
De sortie:
2342<br>3412<br>3421<br>34
Pour éviter de découper hors les mots...
Essayer:
Si vous n'avez pas l'esprit d'une dépendance à une la troisième partie de la bibliothèque et n'avez pas l'esprit regexes:
Alors:
Ce n'est pas fractionner les mots à des espaces mais la question, comme l'a dit, ne demandez pas pour word-wrap.
return String.join(delim, split);
au lieu de goyave.Vous pouvez obtenir de plus efficace que cela, mais je vais laisser ça comme un exercice pour le lecteur.
J'ai unité testé cette solution pour des conditions aux limites:
Appel avec:
Comment environ 1 méthode pour diviser la chaîne de tous les N caractères:
Puis une autre méthode pour insérer quelque chose après chaque morceau:
La méthode suivante prend trois paramètres. Le premier est le texte que vous voulez modifier. Le deuxième paramètre est le texte que vous voulez insérer tous les n caractères. La troisième est l'intervalle dans lequel vous souhaitez insérer le texte.
Vous le feriez appel à cette méthode comme ceci:
Le résultat est:
^C'est différent de l'exemple parce que vous avez eu un jeu avec 9 caractères au lieu de 10 en raison d'erreurs humaines 😉