红孩儿编辑器的模块设计15
红孩儿编辑器的模块设计15
查找功能的逻辑
需要配置的信息有查找目标是多个还是一个,查找方向是向前还是向后,查找范围是全文还是选中范围,查找使用语言是英语还是汉语,在英语的情况下,大小写字母是否敏感,在汉语的情况下,简体字与繁体字是否敏感。查找是否支持正则表达式。在支持正则表达式的情况下,正则表达式的写法支持哪一种规范呢?因为几乎各种高级的编程语言都内在默认支持了正则表达式,但遗憾的是正则表达式的写法没有标准化,各种语言支持的正则表达式的写法规范有差异。本系统支持的正则表达式形如
[0-9]{m,n}这是一个位数为m到n位的每位都是0到9的任何一个数的数。
(1|2)这是一位数,是1或2。
后缀符号有三个?,*,+分别代表零个到一个,零个到多个,一个到多个。/是分界符,\是转义符。
正则表达式内容很多,详细情况这里不描述了。
查找的实现过程:
1读取配置信息
2分析查找的目标字符串
3逐行对比分析是否存在目标字符串,如果找到了,记录位置,在行末尸毛检查英语单词或者汉语词语是否跨行,如果有跨行,调查跨行查找子程序进行处理。
4如果未找到,返回未找到的消息,如果有找到,对相应目标位置进行渲染,例如找到的位置背景色变成淡黄色。
替换功能与查找非常相似,值得注意的一点是它对文件有修改,要有一键恢复的功能。替换是比查找更有实用价值的功能,但为了保险起见,我们几乎都会先执行查找操作,提前预览一下,将要被替换的位置。再执行等效的替换操作。这与我们对数据库的操作类似,在执行更新与删除数据库记录之前,总要查出相关记录进行确认。
|
红孩儿编辑器的模块设计15相关推荐
- 用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器
用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器 HP_tk.py模块是小白量化第二代量化系统中的开发模块.其中HP_tk.py模块是小白量化系统GU ...
- 用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器
用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器 前面我们介绍了在Tkinter中使用exec()函数运行用户程序的方法.exec()采用多线程 ...
- C++ 开发者怒了:这个无用的模块设计最终会害死 C++!
2018 年年底,C++ 标准委员会历史上规模最大的一次会议在美国 San Diego 召开,讨论了哪些特性要加入到 C++20 中.其中,Modules 便是可能进入 C++ 20 的一大重要特性: ...
- 【强烈推荐】如何解决JQuery类Post方式的跨域问题 - 空山雪林通用模块设计工作室 - ITeye技术网站...
[强烈推荐]如何解决JQuery类Post方式的跨域问题 - 空山雪林通用模块设计工作室 - ITeye技术网站 [强烈推荐]如何解决JQuery类Post方式的跨域问题 博客分类:核心代码片段 jQ ...
- Python OpenCV开发MR智能人脸识别打卡系统(四、服务模块设计)
需要源码请点赞关注收藏后评论区留言私信~~~ 整体系统讲解如下 Python OpenCV开发MR智能人脸识别打卡系统(一.需求分析与系统设计) Python OpenCV开发MR智能人脸识别打卡系统 ...
- 三甲:在线富文本编辑器的架构设计及实践
12月5日, 极客邦(InfoQ)在深圳举办 GMTC 大会,蚂蚁集团语雀编辑器技术同学三甲受邀参加大会并分享<在线富文本编辑器的架构设计及实践>,以下内容是根据现场演讲收集整理. 大家下 ...
- PX4模块设计之二十六:BatteryStatus模块
PX4模块设计之二十六:BatteryStatus模块 1. BatteryStatus模块简介 2. 模块入口函数 2.1 主入口battery_status_main 2.2 自定义子命令cust ...
- 客户关系管理项目——客户管理模块设计
一 模块需求细化 1 实现客户信息录入 "添加"只有具有添加客户权限的用户才可以填写,只有具备3号角色的用户才能负责客户的添加,即超链接上会出现"添加客户"超链 ...
- BetaFlight模块设计之二十六:接收机任务分析
BetaFlight模块设计之二十六:接收机任务分析 接收机任务 配置情况 硬件配置 软件配置 驱动配置 sbus驱动函数分析 sbusDataReceive函数 sbusFrameStatus函数 ...
- BetaFlight模块设计之十七:pinioBox任务分析
BetaFlight模块设计之十七:pinioBox任务分析 pinioBox任务 业务配置 硬件配置 pinioBoxUpdate任务分析 基于BetaFlight开源代码框架简介的框架设计,逐步分 ...
最新文章
- ChannelFactory创建和销毁昂贵
- SolidWorks学习笔记4特征
- iframe嵌套页面 跨域_跨域解决方案
- 《Head First 设计模式》学习笔记——状态模式
- 走进武汉,探索多媒体开发最佳实践
- link引入html5,CSS引入方式 | link和@import的区别 — 生僻的前端考点
- C/C++中的占位符
- 基于S函数的BP神经网络PID控制器及simulink仿真
- WIndow Document
- python星号什么意思_Python星号*与**用法分析
- Togu Audio Line推出最新版本的TAL-BassLine-101插件 支持M1芯片
- 如何:从代码创建 UML 类图(ZZ)
- Java内存模型以及happens-before规则
- 获取域管理员权限的几种方式
- 动态规划和分治法解合唱队形问题
- 辛意云教授讲《论语》
- 远程操作安卓手机——所见即所控
- SGU 244. Height, Bisector and Median
- 企业为何需要在内部推广Devops
- 沟通的艺术:看人入里,看出人外 - part 1