JavaScript:如何从指定位置获取首个换行符实现顺序无关字段提取
提取文本中指定字段的内容(顺序无关实现)
要实现不依赖字段顺序提取"Official Name:"对应的内容,核心思路是定位到该字段的起始位置后,直接截取到下一个换行符前的内容,下面提供两种实用方法:
方法一:正则表达式(简洁高效)
利用正则的非贪婪匹配,直接捕获"Official Name:"后到第一个换行符之间的内容,无需关心其他字段位置:
const description = `示例文本: Code Tile Name: NYC Electrical Code Official Name: 2011 New York City Electrical Code Publish Date: 2011-01-01`; // 匹配Official Name字段后的内容,trim()去除前后空格 const officialNameMatch = description.match(/Official Name:(.*?)\n/); const officialName = officialNameMatch ? officialNameMatch[1].trim() : ''; console.log(officialName); // 输出:2011 New York City Electrical Code
如果需要忽略字段名的大小写,可以在正则末尾加i标志:/Official Name:(.*?)\n/i
方法二:字符串索引操作(更直观可控)
通过indexOf定位字段位置和后续换行符位置,手动截取内容,适合需要精细处理边界的场景:
const description = `示例文本: Publish Date: 2011-01-01 Official Name: 2011 New York City Electrical Code Code Tile Name: NYC Electrical Code`; const fieldLabel = 'Official Name:'; const labelPos = description.indexOf(fieldLabel); if (labelPos !== -1) { // 计算内容起始位置(跳过字段名本身) const contentStart = labelPos + fieldLabel.length; // 从内容起始位置开始找第一个换行符 const nextLinePos = description.indexOf('\n', contentStart); // 截取内容:如果是最后一行没有换行,就截取到文本末尾 const officialName = description.slice(contentStart, nextLinePos !== -1 ? nextLinePos : undefined).trim(); console.log(officialName); // 输出:2011 New York City Electrical Code } else { console.log('未找到Official Name字段'); }
这两种方法都完全不依赖其他字段的排列顺序,无论"Official Name:"在文本的哪个位置,都能准确提取对应内容。
内容的提问来源于stack exchange,提问作者alyssaeliyah
相关产品推荐
相关产品推荐

