Swift中如何获取数组内每个字符串的长度?
嘿,在Swift里搞定这个需求超级简单,我给你分享几个常用的方法,结合你给的示例数组["a", "a2", "b", "a2", "d"]来演示:
1. 最简洁:用
map直接生成长度数组 如果你只需要把所有字符串的长度收集成一个新数组,map是最省心的选择——它会遍历原数组的每个元素,把每个字符串转换成对应的长度值:
let strArray = ["a", "a2", "b", "a2", "d"] let lengthArray = strArray.map { $0.count } print(lengthArray) // 输出: [1, 2, 1, 2, 1]
这里的$0代表当前遍历到的字符串,String.count就是它的字符长度(注意:这是Unicode字符的数量,比如单个emoji的count是1,不是字节数)。
2. 遍历数组逐个处理(适合需要额外操作的场景)
如果你需要在获取长度的同时做一些额外动作——比如打印每个字符串和它的长度,或者根据长度过滤元素——用for-in循环会更灵活:
let strArray = ["a", "a2", "b", "a2", "d"] for str in strArray { let length = str.count print("字符串\"\(str)\"的长度是:\(length)") }
运行后会输出:
字符串"a"的长度是:1 字符串"a2"的长度是:2 字符串"b"的长度是:1 字符串"a2"的长度是:2 字符串"d"的长度是:1
3. 同时获取索引和长度
要是你还需要知道每个元素在原数组里的位置,可以搭配enumerated()来遍历,它会返回每个元素的索引和值:
let strArray = ["a", "a2", "b", "a2", "d"] for (index, str) in strArray.enumerated() { print("索引\(index)的字符串\"\(str)\"长度为:\(str.count)") }
输出结果:
索引0的字符串"a"长度为:1 索引1的字符串"a2"长度为:2 索引2的字符串"b"长度为:1 索引3的字符串"a2"长度为:2 索引4的字符串"d"长度为:1
小补充:字符长度 vs 字节数
最后提个小细节:String.count返回的是Unicode字符的数量,如果你的需求是获取字符串的UTF-8字节数,可以这样写:
let exampleStr = "😀" let utf8ByteCount = exampleStr.utf8.count // 输出4,因为这个emoji占4个UTF-8字节
不过从你的示例来看,应该只需要普通的字符长度,用count就完全够用啦。
内容的提问来源于stack exchange,提问作者Rupshikha anand
相关产品推荐
相关产品推荐

