Hãy thử:
String s = // long string
s.replaceAll("(.{10})", "$1<br>");
EDIT: Các tác phẩm trên ... hầu hết thời gian. Tôi đã chơi xung quanh với nó và đã gặp một vấn đề: vì nó xây dựng một Pattern mặc định bên trong nó tạm dừng trên các dòng mới. để giải quyết vấn đề này, bạn phải viết nó theo cách khác.
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);
}
và trình đọc sắc sảo sẽ gặp vấn đề khác: bạn phải thoát khỏi các ký tự đặc biệt regex (như "$ 1") trong văn bản thay thế hoặc bạn sẽ nhận được kết quả không thể đoán trước.
Tôi cũng tò mò và đánh giá phiên bản này so với Jon ở trên. Điều này là chậm hơn bởi một thứ tự độ lớn (1000 thay thế trên một tập tin 60k mất 4,5 giây với điều này, 400ms với mình). Trong 4,5 giây, chỉ khoảng 0,7 giây đã thực sự xây dựng Mô hình. Hầu hết trong số đó là kết hợp/thay thế, do đó nó thậm chí không dẫn đến loại tối ưu hóa đó.
Tôi thường thích các giải pháp ít phức tạp hơn cho mọi thứ. Sau khi tất cả, thêm mã = lỗi tiềm năng hơn. Nhưng trong trường hợp này tôi phải thừa nhận rằng phiên bản của Jon - đó thực sự là việc thực hiện ngây thơ (tôi có nghĩa là trong một cách tốt nhất cách tốt) - là tốt hơn đáng kể.
tuyệt vời và nếu tôi không muốn đặt
trong các từ? ví dụ tránh những thứ như: stackover
luồng và đặt trực tiếp
vào cuối từ? – Giancarlo
Sau đó, đó là một vấn đề khó khăn hơn đáng kể. Biểu thức chính quy * có thể * là cách tốt nhất ở đó, nhưng bạn cần nêu rõ các yêu cầu * rất * chính xác trước tiên. –
một phiên bản ngắn của mã của bạn với regex trong bài đăng này .. http: // stackoverflow.com/questions/10530102/java-parse-string-và-add-line-break-every-100-ký tự – mtk