如何在JavaScript中获取引号内的值,解析Dyno机器人?poll命令参数
JavaScript 提取投票命令中引号包裹内容的实现方案
你需要处理的是形如?poll "<title>" "<choice>" "<choice>"的Dyno机器人投票命令字符串,可通过正则匹配的方式快速提取标题和选项内容,具体实现如下:
核心实现思路
通过全局正则匹配所有双引号包裹的字符串,再按顺序拆分出标题和选项,无需手动切割字符串处理空格,适配参数内容包含空格的场景。
完整代码实现
function parseDynoPollCommand(commandStr) { // 校验命令前缀合法性 const trimedStr = commandStr.trim() if (!trimedStr.startsWith('?poll ')) { throw new Error('输入内容不是合法的Dyno投票命令') } // 正则:匹配所有双引号包裹的内容,捕获组为引号内部文本 const quoteContentRegex = /"([^"]+)"/g const resultList = [] let currentMatch // 循环获取所有匹配项 while((currentMatch = quoteContentRegex.exec(trimedStr)) !== null) { resultList.push(currentMatch[1]) } // Dyno投票要求至少1个标题+2个选项,匹配结果少于3个说明格式错误 if (resultList.length < 3) { throw new Error('投票命令格式错误,需包含1个标题和至少2个选项') } return { pollTitle: resultList[0], pollChoices: resultList.slice(1) } } // 调用示例 const testCommand = '?poll "本周团建去哪" "露营" "剧本杀" "KTV"' const pollData = parseDynoPollCommand(testCommand) console.log(pollData) /* 输出结果: { pollTitle: '本周团建去哪', pollChoices: [ '露营', '剧本杀', 'KTV' ] } */
特殊场景适配
- 如果参数内容包含转义双引号(如
"内容带\"转义引号"),可将正则替换为/"(\\.|[^"\\])*"/g,再对捕获到的内容做转义字符还原即可 - 如果需要同时兼容单引号包裹参数的场景,可将正则替换为
/["']([^"']+)["']/g
内容的提问来源于stack exchange,提问作者Arya Anish
相关产品推荐
相关产品推荐

