[Swift]字符串如何移除奇数位置的字符

445 阅读1分钟

背景

字符串如何移除奇数位置的字符

熟悉基本语法,第一个答案给的很简洁,学习学习

答案

let string = "helloworld"
let newString = string.enumerated().filter({ $0.0 % 2 != 0 }).map({ String($0.element) }).joined()

1.enumerated

for in结合起来做遍历

let string = "helloworld"
for element in string.enumerated() {
    print(element)
}

可以得到的元组(offset, element)

(offset: 0, element: "h")
(offset: 1, element: "e")
(offset: 2, element: "l")
(offset: 3, element: "l")
(offset: 4, element: "o")
(offset: 5, element: "w")
(offset: 6, element: "o")
(offset: 7, element: "r")
(offset: 8, element: "l")
(offset: 9, element: "d")

2.filter

过滤出奇数位置的数组,每个元素也是元组(offset, element)

简写$0= 元组(offset, element), $0.0 = 元组.offset, $0.1 = 元组.element

let element = string.enumerated().filter({ $0.0 % 2 != 0})
print(element)

打印

[
(offset: 1, element: "e"), 
(offset: 3, element: "l"), 
(offset: 5, element: "w"), 
(offset: 7, element: "r"), 
(offset: 9, element: "d")]

3.map

相当于重新对每个元素做改造,现在每个数组元素是元组,先把每个元素改造成字符串

let element = string.enumerated().filter({ $0.0 % 2 != 0}).map({ String($0.element) })
// 或 string.enumerated().filter({ $0.0 % 2 != 0}).map({ String($0.1) })

print(element)

打印

["e", "l", "w", "r", "d"]

4. joined

将数组的每个元素连接在一起

let element = string.enumerated().filter({ $0.0 % 2 != 0}).map({ String($0.1) }).joined()
print(element)

打印

elwrd