在SwiftUI中,如何使用ForEach遍历字符串中的每个字符?
例如
let some_string = "A⍺甲あ"
VStack {
ForEach(....) {....
Text(String(character_in_the_string))
}
}输出
A
⍺
甲
あ发布于 2020-09-04 12:26:09
ForEach要求传递给它的值符合RandomAccessCollection。String是一个Sequence,它可以通过将它变成Array来转换为RandomAccessCollection。
使用Array()将字符串转换为[Character]
VStack {
ForEach(Array(some_string), id: \.self) { character in
Text(String(character))
}
}通常,您应该小心地选择唯一的id。因为some_string可以包含重复的字符,所以可以使用.enumerated()将每个Character转换为一个(offset, element)对( offset是它在String中的位置)。然后使用.offset作为id和.element从元组对中检索Character:
VStack {
ForEach(Array(some_string.enumerated()), id: \.offset) { character in
Text(String(character.element))
}
}例如,如果要从字符串中删除字符,这将非常重要。如果您将该字符用作.id,则如果在一行中列出了几个相同的字符,则SwiftUI可能会选择错误的字符来动画。
发布于 2021-11-27 10:25:02
let yourString = Array("A⍺甲あ") // convert your string to an array
VStack {
ForEach(0..<yourString.count) { num in
Text(String(yourString[num]))
}
}输出:
A
⍺
甲
あhttps://stackoverflow.com/questions/63740992
复制相似问题