如何从含连字符分隔模式的字符串中提取各段内容?
按连字符拆分字符串并提取各段内容
问题背景
你需要从以下格式的字符串中按连字符-拆分并提取每一段内容:
"38384-1-page1-2222", "1-22-page33-02", "99-222-frontpage-111"
目前你已经通过以下代码提取出第一段内容:
string = "38384-1-page1-2222"; string.substr(0, string.indexof("-")); // 返回 38384
但不知道如何提取剩余的1、page1、2222等片段。
解决方案
方法1:使用split()函数(最简洁)
几乎所有编程语言都提供了字符串拆分函数(比如JavaScript的split()、Python的split()、Java的split()),直接按-拆分字符串后,就能得到包含所有片段的数组,通过索引即可获取对应内容:
以JavaScript为例:
const str = "38384-1-page1-2222"; const segments = str.split("-"); // 提取各段内容 const firstSegment = segments[0]; // "38384" const secondSegment = segments[1]; // "1" const thirdSegment = segments[2]; // "page1" const fourthSegment = segments[3]; // "2222"
方法2:延续indexOf+substr的手动截取方式
如果你不想用拆分函数,可以通过循环调用indexOf定位连字符的位置,再逐段截取:
let str = "38384-1-page1-2222"; let currentStart = 0; let hyphenPos = str.indexOf("-"); // 第一段 const part1 = str.substring(currentStart, hyphenPos); // 第二段 currentStart = hyphenPos + 1; hyphenPos = str.indexOf("-", currentStart); const part2 = str.substring(currentStart, hyphenPos); // 第三段 currentStart = hyphenPos + 1; hyphenPos = str.indexOf("-", currentStart); const part3 = str.substring(currentStart, hyphenPos); // 第四段(最后一段,无需找下一个连字符) currentStart = hyphenPos + 1; const part4 = str.substring(currentStart);
说明
split()方法代码更简洁,适合大多数场景,且能自动处理任意数量的片段;- 手动截取方式适合需要精细控制截取过程的场景,比如处理不规则格式的字符串。
内容的提问来源于stack exchange,提问作者kate moss
相关产品推荐
相关产品推荐

