Tôi có một đoạn lớn mà tôi cần phải chia thành các dòng sao cho mỗi dòng không được có nhiều hơn 100 ký tự và không có từ nào phải bị hỏng. Tôi sẽ đi đâu để tới đó? Tôi đoán với các biểu thức chính quy là cách tốt nhất nhưng tôi không chắc chắn như thế nào.Làm cách nào để bọc lại một đoạn văn cho một độ dài dòng nhất định?
Trả lời
Sử dụng Text::Wrap.
Text::Wrap::wrap()
là trình định dạng đoạn rất đơn giản. Nó định dạng một đoạn văn tại một thời điểm bằng cách phá vỡ các dòng tại các ranh giới từ. Thụt lề được kiểm soát cho dòng đầu tiên ($initial_tab
) và tất cả các dòng tiếp theo ($subsequent_tab
) một cách độc lập.
Trong khi bạn nên sử dụng một chức năng thư viện nếu bạn có một, như KennyTM đề nghị, một regex đơn giản để giải quyết việc này có thể là:
.{1,100}\b
này sẽ mất 100 ký tự hoặc ít hơn, và sẽ không phá vỡ từ ngữ. Tuy nhiên, nó có thể phá vỡ các ký tự khác, ví dụ: dấu chấm ở cuối câu có thể được tách rời khỏi từ cuối cùng (last word<\n>. new line
).
Nếu đó là một vấn đề, bạn cũng có thể thử:
.{1,99}(\s|.$)
Đó đảm bảo ký tự cuối cùng trong mỗi trận đấu là một khoảng trắng.
Tất cả những điều này giả sử bạn tính khoảng trắng là ký tự và có thể không có dòng mới trong văn bản của bạn (một đoạn) và không có từ hơn 100 ký tự.
Bạn không không muốn sử dụng \ b ở đó. Nó sẽ quấn trên những thứ như dấu nháy đơn trong không. –
@Brian - chính xác. Tôi đã đề cập đến điều đó và có một giải pháp thay thế. – Kobi
- 1. Lặp lại mảng với một độ dài nhất định?
- 2. Tạo một dòng ký tự dài bọc trong HTML
- 3. Làm cách nào để bọc hoặc ngắt văn bản/từ dài trong một khoảng rộng cố định?
- 4. Một cách hay để tạo chuỗi dài bọc cho dòng mới bằng Python?
- 5. Quấn văn bản vào dòng kế tiếp khi nó vượt quá độ dài nhất định?
- 6. Cách định vị và bao bọc văn bản dài?
- 7. MigraDoc - In đậm văn bản nhất định trong một đoạn
- 8. Làm cách nào để thoát trình phân tích cú pháp đánh dấu cho một số đoạn văn bản nhất định?
- 9. Làm thế nào để bọc một hàm với các đối số độ dài thay đổi?
- 10. Làm cách nào để in một dòng nhất định của một tệp bằng PowerShell?
- 11. Làm thế nào tôi có thể bọc văn bản với một số chiều dài trong Vim?
- 12. Làm thế nào để bọc văn bản trong một JTextArea
- 13. Làm cách nào để chỉ nhúng một số dòng nhất định từ một ý chính?
- 14. Làm thế nào để kích hoạt dòng bọc chỉ cho một số loại tệp trong Vim?
- 15. Trong emacs, tôi có thể có một bộ cài đặt dòng bọc cho mã và một cho văn bản không?
- 16. Làm cách nào để xác định phần tương tự dài nhất của một số chuỗi?
- 17. Làm cách nào để biết một điểm thuộc về một dòng nhất định?
- 18. Làm cách nào để chỉ ghi một số dòng nhất định của một tệp trong Perl?
- 19. làm cho gvim xử lý dòng bọc là dòng mới
- 20. Làm cách nào để thêm một dòng vào một Hộp văn bản nhiều dòng?
- 21. Cách T-SQL hiệu quả nhất để đệm một varchar ở bên trái đến một độ dài nhất định?
- 22. Cách chọn một cột nhất định từ một dòng văn bản?
- 23. CA1305: Độ dài khi chỉ định văn hóa
- 24. Python cho rằng tệp văn bản 3000 dòng là một dòng dài?
- 25. Làm thế nào để bạn tìm thấy một điểm tại một khoảng cách vuông góc nhất định từ một dòng?
- 26. Làm cho Vim chỉ làm một từ mềm bọc, không cứng từ bọc
- 27. Matplotlib: linewidth được thêm vào độ dài của một dòng
- 28. Làm cách nào để xác định độ dài của một ký tự chưa ký *?
- 29. Làm cách nào để điền một chuỗi độ dài không xác định trong Powershell?
- 30. Tôi làm cách nào để tìm số trang cho một Đoạn văn bản?
nếu bạn có 1 vấn đề và quyết định giải quyết nó bằng regex, giờ đây bạn có 2 vấn đề. –
'$ câu hỏi [1098656] -> nhận xét [1] -> in();' (http://stackoverflow.com/questions/1098296/are-regular-expressions-worth-the-hassle/1098656) – kennytm