Files
cultivation-world-simulator/src/utils/text_wrap.py
2025-09-03 21:56:38 +08:00

54 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
def wrap_text(text: str, max_width: int = 20) -> list[str]:
"""
将长文本按指定宽度换行
Args:
text: 要换行的文本
max_width: 每行的最大字符数默认20
Returns:
换行后的文本行列表
"""
if not text:
return []
lines = []
current_line = ""
# 按换行符分割,处理已有的换行
paragraphs = text.split('\n')
for paragraph in paragraphs:
if not paragraph.strip():
lines.append("")
continue
words = paragraph.split()
for word in words:
# 如果当前行加上新词会超过限制
if len(current_line) + len(word) + 1 > max_width:
if current_line:
lines.append(current_line.strip())
current_line = word
else:
# 如果单个词就超过限制,强制换行
if len(word) > max_width:
# 长词强制切分
for i in range(0, len(word), max_width):
lines.append(word[i:i + max_width])
else:
lines.append(word)
else:
if current_line:
current_line += " " + word
else:
current_line = word
# 处理段落的最后一行
if current_line:
lines.append(current_line.strip())
current_line = ""
return lines