首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串中的ForEach字符

字符串中的ForEach字符
EN

Stack Overflow用户
提问于 2020-09-04 12:14:02
回答 2查看 1.4K关注 0票数 2

在SwiftUI中,如何使用ForEach遍历字符串中的每个字符?

例如

代码语言:javascript
复制
let some_string = "A⍺甲あ"

VStack {
  ForEach(....) {....
    Text(String(character_in_the_string))
  }
}

输出

代码语言:javascript
复制
A
⍺
甲
あ
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-04 12:26:09

ForEach要求传递给它的值符合RandomAccessCollectionString是一个Sequence,它可以通过将它变成Array来转换为RandomAccessCollection

使用Array()将字符串转换为[Character]

代码语言:javascript
复制
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

代码语言:javascript
复制
VStack {
    ForEach(Array(some_string.enumerated()), id: \.offset) { character in
        Text(String(character.element))
    }
}

例如,如果要从字符串中删除字符,这将非常重要。如果您将该字符用作.id,则如果在一行中列出了几个相同的字符,则SwiftUI可能会选择错误的字符来动画。

票数 8
EN

Stack Overflow用户

发布于 2021-11-27 10:25:02

代码语言:javascript
复制
let yourString = Array("A⍺甲あ") // convert your string to an array

VStack {
    ForEach(0..<yourString.count) { num in
        Text(String(yourString[num]))
    }
}

输出:

代码语言:javascript
复制
A 
⍺ 
甲 
あ
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63740992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档