gpt4 book ai didi

arrays - 如何在 Swift 中将字符串/数组中的所有其他字母大写?

转载 作者:搜寻专家 更新时间:2023-11-01 05:54:55 26 4
gpt4 key购买 nike

我试图在 Swift 中将字符串中的每个偶数占位符都大写。所以 [0],[2],[4],[6] 中的字符都变成大写。

我有一个声明的变量:

var str = "This is a test" 

我有一个数组,可以将变量分解成一个数组:

let characters = Array(str) //Creates the array "["T", "h", "i", "s", " ", "i", "s", " ", "a", " ", "t", "e", "s", "t"]\n"

最重要的是,我正在创建一个空数组来输入新的大写/小写字母

var newCharacters = Array<Character>()

然后在 0 处声明索引

var index = 0 //declaring the index at 0

我正在尝试弄清楚如何创建 for 循环,该循环将嗅探出偶数数组项,然后将其中找到的字符大写。

我已经创建了一个 for 循环来操作数组中的偶数占位符,我只是不知道将每个其他占位符的字符串大写的语法:

for letter in characters {

if index % 2 == 0 {

}

}

我想弄清楚:将每个其他字母(数组中的偶数)大写的语法是什么,将它们放入新数组,然后将其转换回字符串。

最终结果应该是:

"ThIs iS TeSt"

最佳答案

您可以按顺序组合enumeratedmapjoined 来创建结果:

let str = "This is a test"

let result = str.enumerated()
.map { $0.offset % 2 == 0 ? String($0.element).uppercased() : String($0.element) }
.joined()

print(result)
ThIs iS A TeSt

解释:

  1. String 可以像 Character 数组一样被枚举。在 String 上调用 .enumerated() 会导致它生成一个 (offset: Int, element: Character) 元组序列。
  2. map 接受一个序列并创建一个数组。 map 之后的闭包依次为序列中的每个元素调用,闭包返回的值成为新数组中的下一个元素。
  3. $0 是传递给 map 的值的默认名称。在这种情况下,我们将传递 (offset: Int, element: Character) 元组。 $0.offset是字符在String中的位置,$0.element是字符。
  4. 此处使用三元运算符返回从 Character 创建的 uppercased() String 如果偏移量是偶数或刚好String 如果偏移量是奇数。
  5. map的结果是[String],然后使用joined()来连接String的数组 返回到单个 String

关于arrays - 如何在 Swift 中将字符串/数组中的所有其他字母大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52490061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com