Swift 4:如何基于指定字符修剪IP地址字符串的末尾数字
嘿,这个需求太常见啦,尤其是要遍历同网段IP的时候!我给你分享几个在Swift里实现的实用方案,按需挑选就行:
方法一:分割拼接法(直观易懂)
把IP地址按.拆分成数组,去掉最后一段数字,再把剩下的部分重新拼接起来,最后补上.就搞定了。不管最后一段是1位、2位还是3位数字,这个方法都能完美处理:
let originalIP = "192.168.1.123" let ipComponents = originalIP.components(separatedBy: ".") // 先确保是合法的IPv4格式(分割后有4个部分),避免崩溃 if ipComponents.count == 4 { let ipPrefix = ipComponents.dropLast().joined(separator: ".") + "." print(ipPrefix) // 输出:192.168.1. }
方法二:正则匹配法(精准定位)
如果能确定IP格式是标准IPv4,用正则表达式可以直接匹配到最后一个.之前的所有内容,一步到位:
let originalIP = "192.168.1.123" // 正则表达式:匹配从开头到最后一个`.`的所有内容 if let prefixRange = originalIP.range(of: "^(.*)\\.", options: .regularExpression) { let ipPrefix = String(originalIP[prefixRange]) print(ipPrefix) // 输出:192.168.1. }
小提示:如果要处理非标准IP格式,最好先做格式校验,避免匹配失败。
方法三:索引截取法(高效简洁)
直接找到最后一个.的位置,然后截取从开头到这个位置的字符串(包含.),效率很高:
let originalIP = "192.168.1.123" if let lastDotIndex = originalIP.lastIndex(of: ".") { let ipPrefix = String(originalIP[...lastDotIndex]) print(ipPrefix) // 输出:192.168.1. }
额外小建议
如果你的场景需要频繁处理IP,最好先做基础的格式校验(比如判断分割后的数组长度为4,且每个部分都是0-255之间的数字),这样能避免因非法IP导致的程序异常哦~
内容的提问来源于stack exchange,提问作者Seth Haberman
相关产品推荐
相关产品推荐

