使用Peggy.js在JavaScript中解析字符串 修复星号位置识别异常问题
星号位置解析逻辑修复方案
你之前的代码仅处理了开头带*的分支,没有对尾部星号、首尾同时带星的场景做判断,因此其他场景返回结果异常。
你可以通过优先检测字符串首尾是否同时存在*,再分别判断单端星号的逻辑实现需求,核心代码如下:
const parser = { parse(str) { // 先分别判断首尾是否有星号 const hasStartStar = str.startsWith('*'); const hasEndStar = str.endsWith('*'); let starStatus = 'no_star'; let resultText = str; // 优先判断前后包裹的场景,避免被单端判断逻辑拦截 if (hasStartStar && hasEndStar) { starStatus = 'wrapped'; resultText = str.slice(1, -1); } else if (hasStartStar) { starStatus = 'start'; resultText = str.slice(1); } else if (hasEndStar) { starStatus = 'end'; resultText = str.slice(0, -1); } return { star: starStatus, text: resultText } } }
使用你提供的示例输入测试:
console.log(parser.parse("*string")); console.log(parser.parse("*string*")); console.log(parser.parse("string*")); console.log(parser.parse("string"));
输出结果完全匹配期望:
{star: "start", text: "string"} {star: "wrapped", text: "string"} {star: "end", text: "string"} {star: "no_star", text: "string"}
内容的提问来源于stack exchange,提问作者Benk I
相关产品推荐
相关产品推荐

