OpenAI返回主题行字符串,按数字分割转数组失败求解决
解决带数字序号的邮件主题字符串分割问题
问题场景
从OpenAI获取的邮件主题返回结果是带数字序号的字符串,使用split('/[0-9]+\./')无法正确分割,所有内容仍处于单个数组索引中,需要提取出纯主题内容组成目标数组。
错误原因
split方法传入字符串形式的'/[0-9]+\./'会被当作普通文本分割符,而非正则表达式,导致分割失效。
正确实现代码
var choices = '1. "Don\'t Miss Out: Exclusive Deals Inside!" 2. "Hurry! Limited Time Offer Inside" 3. "Unlock Savings: Open This Email Now" 4. "Last Chance to Save Big"'; // 用正则表达式匹配数字序号作为分割符 var splitArr = choices.split(/\d+\.\s/); // 过滤空元素并清理主题内容(去除首尾引号和空格) var result = splitArr.filter(item => item.trim() !== '') .map(item => item.trim().replace(/^"|"$/g, '')); console.log(result);
代码说明
split(/\d+\.\s/):使用正则字面量匹配「一个或多个数字+句号+空格」的序号格式,以此作为分割符拆分字符串。filter(item => item.trim() !== ''):过滤分割后产生的空字符串(分割符在开头时会生成空元素)。map(item => item.trim().replace(/^"|"$/g, '')):先去除每个主题内容的前后空格,再通过正则去除首尾的双引号,得到纯净的主题文本。
输出结果
["Don't Miss Out: Exclusive Deals Inside!","Hurry! Limited Time Offer Inside","Unlock Savings: Open This Email Now","Last Chance to Save Big"]
内容的提问来源于stack exchange,提问作者dev
相关产品推荐
相关产品推荐

