Dene: Örneğin
bu benim dizedir
String s = // long string
s.replaceAll("(.{10})", "$1<br>");
DÜZENLEME: Yukarıdaki işler ... çoğu zaman. Bununla oynamaktayım ve bir problemle karşılaştım: dahili bir şekilde varsayılan bir model oluşturduğundan, yeni satırlarda durur. Bu etrafında almak için farklı yazmanız gerekir.
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);
}
ve zeki okuyucu başka sorun üzerinde gelip alacak: Eğer yedek metninde ("$ 1" gibi) normal ifadedeki özel karakterlerden kurtulmak zorunda veya öngörülemeyen sonuçlar alırsınız.
Bu versiyonda Jon'un yukarıda yazdığı şeye karşı meraklı ve karşılaştırmalıyım. Bu bir büyüklük sırasına göre daha yavaştır (60k dosyadaki 1000 yedek, bununla 4.5 saniye sürdü, onunla 400 ms). 4.5 saniyenin sadece yaklaşık 0,7 saniyesi aslında Deseni oluşturuyordu. Çoğu eşleşme/değiştirme üzerindeydi, bu yüzden kendini bu tür bir optimizasyona bile götürmedi.
Normalde işler için daha az endişeli çözümleri tercih ederim. Sonuçta, daha fazla kod = daha fazla potansiyel hata. Ama bu durumda Jon'un versiyonunun - ki bu gerçekten saf uygulama (yani iyi bir şekilde) - önemli ölçüde daha iyi olduğunu kabul etmeliyim. gibi
fantastik!
kelimelerin içine kelimeler eklemek istemiyorum? örnek gibi şeyler kaçınarak:
yığın akışı ve kelimenin sonunda
doğrudan koyarak? – Giancarlo
Ardından bu çok daha zor bir sorundur. Düzenli bir ifade * burada en iyi yol olabilir *, ancak gereklilikleri belirtmeniz gerekir * çok * önce tam olarak. –
Bu yazı içinde regex ile kodunuzun kısa bir sürümü .. http: // stackoverflow.com/questions/10530102/java-parse-string-ve-add-line-break-her-100-karakterleri – mtk