如何用JavaScript开发可补全用户输入缺失双引号的小工具?
需求背景:开发一款JavaScript小工具,修复用户输入的
object1:"key1 key2" object2:"key3 key4"格式字符串中缺失的开闭引号,不需要现成代码,要可行的实现思路。
实现思路
- 首先梳理清楚合法格式的判定规则
- 每一个独立项的结构为
[标识符]:"[键内容]",标识符仅包含字母、数字、下划线,键内容允许包含空格,不同项之间用空格分隔 - 全局引号总数量为偶数,每一个开引号
"必须对应一个闭引号"
- 每一个独立项的结构为
- 第一步:做基础字符扫描,维护状态变量
- 初始化
isInQuote状态为false,代表当前不在引号包裹的键内容范围内,从头逐字符遍历输入字符串 - 扫描到
:字符时,如果isInQuote为false,说明接下来应该是键内容的开引号,如果下一个字符不是",直接插入一个开引号,同时把isInQuote设为true
- 初始化
- 第二步:识别引号闭合的边界
- 扫描到空格字符时,如果
isInQuote为true,先向后预扫描若干字符,判断后续内容是否符合[标识符]:的新项前缀规则 - 如果后续是新的项前缀,说明当前键内容已经结束,直接在当前空格前插入一个闭引号,同时把
isInQuote设为false
- 扫描到空格字符时,如果
- 第三步:收尾补全
- 整段字符串遍历结束后,如果
isInQuote还是true,说明最后一个键的闭引号缺失,直接在字符串末尾补一个闭引号
- 整段字符串遍历结束后,如果
- 第四步:场景验证
- 把所有你能想到的错误场景列出来逐一测试,比如缺开引号、缺闭引号、连续多个项都缺引号、首尾缺引号等,调整逻辑适配边界情况
内容的提问来源于stack exchange,提问作者ShogoBCN
相关产品推荐
相关产品推荐

