将字符串拆分为Swift中长度为1的字符串数组

将字符串拆分为Swift中长度为1的字符串数组,swift,string,Swift,String,假设我这里有一个字符串: var str = "Hello" 我想将字符串拆分成一个子字符串数组,每个子字符串的长度为1 var arr = // ["H", "e", "l", "l", "o"] 我知道我可以使用arr=Arraystr获取字符数组,然后使用map将它们转换为字符串数组,如下所示: let arr = Array(str).map { String($0) } 没有地图我还能做什么?还是使用map的更好方法?不知道为什么要避免使用map。有很多方法可以从字符串中获取字符

假设我这里有一个字符串:

var str = "Hello"
我想将字符串拆分成一个子字符串数组,每个子字符串的长度为1

var arr = // ["H", "e", "l", "l", "o"]
我知道我可以使用arr=Arraystr获取字符数组,然后使用map将它们转换为字符串数组,如下所示:

let arr = Array(str).map { String($0) }

没有地图我还能做什么?还是使用map的更好方法?

不知道为什么要避免使用map。有很多方法可以从字符串中获取字符串数组,而无需使用map。为了好玩,这里有一些例子:

var str11 = "Hello"

//For character in
var a: [String] = []
for char in str11 { a.append(String(char)) }

//forEach
var b: [String] = []
str11.forEach { b.append(String($0)) }

//while + index
var c: [String] = []
var i = str11.startIndex
while i < str11.endIndex {
    c.append(String(str11[i]))
    i = str11.index(after: i)
}

//filter
var d: [String] = []
_ = str11.filter { char in
    d.append(String(char))
    return false
}

//reduce into
let e: [String] = str11.reduce(into: [String]()) {
    $0.append(String($1))
}

//compactMap
let f: [String] = str11.compactMap { String($0) }

//sorted
var g: [String] = Array(repeating: " ", count: str11.count)
_ = str11.enumerated().sorted {
    ($0.element, g[$0.offset] = String($0.element)).0 < ($1.element, g[$1.offset] = String($1.element)).0
}

//regular expression
var h: [String] = []
let regex = try! NSRegularExpression(pattern: ".{1}")
let matches = regex.matches(in: str11,
                            range: NSRange(location: 0, length: (str11 as NSString).length))
for match in matches {
    h.append(String(str11[Range(match.range, in: str11)!]))
}

//makeIterator
var j: [String] = []
var iterator = str11.makeIterator()
while let char = iterator.next() {
    j.append(String(char))
}

感谢@vacawama的回答。 这真是太好了。 虽然这使用了地图,但它非常简洁

let arr = str.map(String.init)

地图怎么了?让arr=str.mapString.init很好地完成这项工作。让子字符串=str.indexs.map{str[$0…$0]}如果坚持不使用map,使用reduce let characters=str.indexs.reduce[]{$0+[str[$1…$1]}或使用reduceinto:let characters=str.indexs.reduceinto:[{$0.appendstr[$1…$1]}相同的逻辑“无映射”“这个要求很愚蠢。”瓦卡瓦马,我喜欢你的方式。比你好多了。OP要了一系列的substrings@LeoDabus他们说了,然后用地图把他们扔给了斯特林。他说他知道他能做到,但他不想to@LeoDabus我真的不在乎外界的认可,那是对孩子们来说的,一个足够悲伤的人没有心情去娱乐或聊天。链接的答案确实使用了map。使用延迟的酷方法,尽管再次大声喊出@vacawamaThis是否使用地图??!对到目前为止,这是最好的一个。我不明白为什么人们总是对我的问题投反对票。我是这个社区的新手。好的,我刚刚更新了这个问题。谢谢你们所有人的帮助。