如何在JavaScript中拆分文本并保留双引号内短语生成指定格式?
问题分析与代码修改
原代码的核心问题
- 错误拆分字符串:使用
split(' ')会将带空格的短语(如"on time")拆分为"on和time"两个片段,导致无法识别完整的短语。 - 未处理大小写转换:期望输出要求内容转为大写,但原代码没有做任何大小写转换。
- 格式生成错误:短语需要用两个双引号包裹,单个单词用一个双引号包裹,原代码对两种情况的格式处理都不符合要求。
修改后的代码
const _searchKeyword = req.body.fullTextKeyword; // 用正则匹配所有被双引号包裹的内容,捕获组提取引号内的文本 const keywordMatches = _searchKeyword.match(/"([^"]+)"/g) || []; const formattedKeywords = keywordMatches.map(match => { // 去掉前后的双引号,得到原始内容 const content = match.slice(1, -1); // 转成大写 const upperContent = content.toUpperCase(); // 判断是否是短语(包含空格) if (content.includes(' ')) { // 短语用两个双引号包裹 return `""${upperContent}""`; } else { // 单个单词用一个双引号包裹 return `"${upperContent}"`; } }); // 拼接所有处理后的结果 const concatenatedKeywords = formattedKeywords.join('');
代码说明
- 正则匹配:
/"([^"]+)"/g会全局匹配所有被双引号包裹的内容,确保带空格的短语被完整捕获。 - 大小写转换:通过
toUpperCase()将内容转为大写,符合期望输出要求。 - 格式区分:判断内容是否包含空格,分别生成
""短语""和"单词"的格式。 - 拼接结果:直接用空字符串拼接处理后的内容,得到最终的目标格式。
测试验证
输入:"on time" "flight"
输出:""ON TIME""FLIGHT"
内容的提问来源于stack exchange,提问作者amit kumar
相关产品推荐
相关产品推荐

