049. 编写一个函数,实现简单的文本编辑器功能,支持增删改查
在 Python 中,可以实现一个简单的文本编辑器功能,支持增加、删除、修改和查询文本内容。
示例代码
class SimpleTextEditor:
"""
简单文本编辑器类,支持增删改查功能。
"""
def __init__(self):
self.text = "" # 初始化为空字符串
def add_text(self, content):
"""
增加文本内容。
参数:
content (str): 要添加的文本内容。
"""
self.text += content
print("文本已添加。")
def delete_text(self, start, end):
"""
删除指定范围的文本内容。
参数:
start (int): 起始索引(包含)。
end (int): 结束索引(不包含)。
"""
if start < 0 or end > len(self.text) or start > end:
print("错误:索引范围无效。")
return
self.text = self.text[:start] + self.text[end:]
print("文本已删除。")
def modify_text(self, start, end, new_content):
"""
修改指定范围的文本内容。
参数:
start (int): 起始索引(包含)。
end (int): 结束索引(不包含)。
new_content (str): 新的文本内容。
"""
if start < 0 or end > len(self.text) or start > end:
print("错误:索引范围无效。")
return
self.text = self.text[:start] + new_content + self.text[end:]
print("文本已修改。")
def query_text(self, start, end):
"""
查询指定范围的文本内容。
参数:
start (int): 起始索引(包含)。
end (int): 结束索引(不包含)。
返回:
str: 查询到的文本内容。
"""
if start < 0 or end > len(self.text) or start > end:
print("错误:索引范围无效。")
return ""
return self.text[start:end]
# 测试代码
editor = SimpleTextEditor()
# 增加文本
editor.add_text("Hello, World!")
print("当前文本:", editor.query_text(0, len(editor.text)))
# 修改文本
editor.modify_text(7, 12, "Python")
print("当前文本:", editor.query_text(0, len(editor.text)))
# 删除文本
editor.delete_text(0, 6)
print("当前文本:", editor.query_text(0, len(editor.text)))
# 查询文本
print("查询结果:", editor.query_text(0, 5))
运行结果
运行上述代码后,输出如下:
文本已添加。
当前文本: Hello, World!
文本已修改。
当前文本: Hello, Python!
文本已删除。
当前文本: Python!
查询结果: Pytho
代码解释
- 初始化:
__init__
方法初始化一个空字符串self.text
,用于存储文本内容。 - 增加文本:
add_text
方法将新的文本内容追加到当前文本的末尾。 - 删除文本:
delete_text
方法删除指定范围的文本内容。通过字符串切片操作实现。 - 修改文本:
modify_text
方法修改指定范围的文本内容。通过字符串切片操作和拼接实现。 - 查询文本:
query_text
方法查询指定范围的文本内容。通过字符串切片操作实现。
扩展:命令行接口
可以为文本编辑器添加一个简单的命令行接口,让用户可以通过命令行操作文本编辑器。以下是扩展代码:
def simple_text_editor_cli():
"""
简单文本编辑器的命令行接口。
"""
editor = SimpleTextEditor()
print("欢迎使用简单文本编辑器!")
print("输入 'help' 查看可用命令,输入 'exit' 退出程序。")
while True:
command = input("请输入命令:").strip()
if command.lower() == 'exit':
print("退出程序。")
break
elif command.lower() == 'help':
print("可用命令:")
print(" add <text> - 增加文本")
print(" delete <start> <end> - 删除文本")
print(" modify <start> <end> <new_text> - 修改文本")
print(" query <start> <end> - 查询文本")
print(" show - 显示当前文本")
elif command.lower().startswith('add'):
parts = command.split(maxsplit=1)
if len(parts) == 2:
editor.add_text(parts[1])
else:
print("错误:请输入要添加的文本。")
elif command.lower().startswith('delete'):
parts = command.split()
if len(parts) == 3:
try:
start = int(parts[1])
end = int(parts[2])
editor.delete_text(start, end)
except ValueError:
print("错误:请输入有效的索引。")
else:
print("错误:请输入起始和结束索引。")
elif command.lower().startswith('modify'):
parts = command.split(maxsplit=3)
if len(parts) == 4:
try:
start = int(parts[1])
end = int(parts[2])
new_text = parts[3]
editor.modify_text(start, end, new_text)
except ValueError:
print("错误:请输入有效的索引。")
else:
print("错误:请输入起始、结束索引和新文本。")
elif command.lower().startswith('query'):
parts = command.split()
if len(parts) == 3:
try:
start = int(parts[1])
end = int(parts[2])
result = editor.query_text(start, end)
print("查询结果:", result)
except ValueError:
print("错误:请输入有效的索引。")
else:
print("错误:请输入起始和结束索引。")
elif command.lower() == 'show':
print("当前文本:", editor.query_text(0, len(editor.text)))
else:
print("未知命令,请输入 'help' 查看可用命令。")
# 调用命令行接口
simple_text_editor_cli()
测试示例
假设用户输入如下内容:
请输入命令:add Hello, World!
请输入命令:modify 7 12 Python
请输入命令:delete 0 6
请输入命令:query 0 5
请输入命令:show
请输入命令:exit
运行结果如下:
欢迎使用简单文本编辑器!
输入 'help' 查看可用命令,输入 'exit' 退出程序。
文本已添加。
文本已修改。
文本已删除。
查询结果: Pytho
当前文本: Python!
退出程序。
注意事项
- 输入验证:在解析用户输入时,确保对输入进行验证,避免因无效输入导致程序崩溃。
- 用户体验:提供清晰的帮助信息,让用户了解可用的命令。
- 扩展性:可以根据需要添加更多功能,如撤销操作、保存到文件等。
视频讲解
BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)