Swift中解析字符串提取姓氏的实现方法咨询
提取固定格式姓名中的姓氏
嘿,这个问题其实很好解决,不用纠结索引位置~ 既然你的输入格式固定是“名 姓”(单空格分隔),这里有两种简单可靠的方法帮你提取姓氏:
方法1:用split()分割后取最后一项
利用字符串的split()方法按空格把姓名拆成数组,然后取数组的最后一个元素就是姓氏。这种写法简洁直观,完全不需要关心索引:
let str = "Fred Bloggs"; let lastName = str.split(' ').pop(); // 得到 "Bloggs" let secondStr = "William Wright"; let secondLastName = secondStr.split(' ').pop(); // 得到 "Wright"
如果以后你的输入格式扩展成带中间名的情况(比如"Mary Ann Smith"),这个方法依然能正确提取最后面的姓氏,兼容性拉满。
方法2:用lastIndexOf()定位空格后截取
先找到字符串中最后一个空格的位置,再从这个位置的下一位开始截取到字符串末尾,同样能精准拿到姓氏:
let str = "Fred Bloggs"; let spacePos = str.lastIndexOf(' '); let lastName = str.slice(spacePos + 1); // "Bloggs" let secondStr = "William Wright"; let secondSpacePos = secondStr.lastIndexOf(' '); let secondLastName = secondStr.slice(secondSpacePos + 1); // "Wright"
这种方法的优势是避免了创建数组,对于性能敏感的场景更友好,当然在普通业务场景下两种方法差别不大。
小提醒:因为你明确说了输入格式是固定的“名 姓”,所以两种方法都能完美适配。要是以后格式有变化,优先选上面两种通用型的写法,不用改代码就能应对~
内容的提问来源于stack exchange,提问作者Phil Edge
相关产品推荐
相关产品推荐

