Essayez:
String s = // long string
s.replaceAll("(.{10})", "$1<br>");
EDIT: Les travaux ci-dessus ... la plupart du temps. J'ai joué avec et j'ai rencontré un problème: puisqu'il construit un Pattern par défaut en interne, il s'arrête sur les retours à la ligne. Pour contourner cela, vous devez l'écrire différemment.
public static String insert(String text, String insert, int period) {
Pattern p = Pattern.compile("(.{" + period + "})", Pattern.DOTALL);
Matcher m = p.matcher(text);
return m.replaceAll("$1" + insert);
}
et le lecteur astucieux revenir sur un autre problème: vous devez échapper les caractères spéciaux regex (comme « $ 1 ») dans le texte de remplacement ou vous obtiendrez des résultats imprévisibles.
J'ai aussi été curieux et comparé cette version avec celle de Jon ci-dessus. Celui-ci est plus lent d'un ordre de grandeur (1000 remplacements sur un fichier de 60k ont pris 4,5 secondes avec celui-ci, 400ms avec le sien). Sur les 4,5 secondes, seulement environ 0,7 secondes était en train de construire le motif. La plupart d'entre elles concernaient l'appariement/remplacement, de sorte qu'il ne s'est même pas dirigé vers ce type d'optimisation. Normalement, je préfère les solutions moins verbeuses aux choses. Après tout, plus de code = plus de bugs potentiels. Mais dans ce cas, je dois admettre que la version de Jon - qui est vraiment la mise en œuvre naïve (je veux dire que dans un bonne manière) - est nettement meilleure.
fantastique! et si je ne veux pas mettre
en mots? exemple en évitant des choses comme: stackover
flux et mettre directement
à la fin du mot? – Giancarlo
Alors c'est un problème beaucoup plus difficile. Une expression régulière * peut être le meilleur moyen d'y parvenir, mais vous devez énoncer les exigences * très * en premier. –
une version courte de votre code avec regex dans ce post .. http: // stackoverflow.com/questions/10530102/java-parse-string-et-ajouter-line-break-every-100-caractères – mtk