我尝试在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处声明index
var index = 0 //declaring the index at 0
我试图弄清楚如何创建for循环,该循环将嗅出偶数数组项,然后将其中的字符大写。
我已经创建了一个for循环,它将操作数组中的偶数占位符,我只是不知道将每个其他占位符的字符串大写的语法:
for letter in characters {
if index % 2 == 0 {
}
}
我想弄明白:语法是什么每隔一个字母大写(数组中的偶数),把它们放在新数组中,然后把它转换回字符串。
最终结果应该是:
"ThIs iS TeSt"
3条答案
按热度按时间ctehm74n1#
您可以按顺序合并
enumerated
、map
和joined
以创建结果:说明:
String
可以被枚举为Character
的数组。在String
上调用.enumerated()
会产生一个(offset: Int, element: Character)
元组序列。map
接受一个序列并创建一个数组。map
后面的闭包依次为序列的每个元素调用,闭包返回的值成为新数组中的下一个元素。$0
是传递给map的值的默认名称。在本例中,我们传递的是(offset: Int, element: Character)
元组。$0.offset
是字符在String
中的位置,$0.element
是字符。1.这里使用三进制运算符返回
uppercased()
String
,如果偏移量是偶数,则从Character
创建;如果偏移量是奇数,则仅返回String
。map
的结果是[String]
,然后使用joined()
将String
的数组连接回单个String
。lbsnaicq2#
一种方法是使用
stride
:请注意,在使用Unicode时,有些字符大写为多字符串,因此
Character
数组并不十分合适(因此需要转换为String
数组)。ddarikpa3#
试试这个代码
结果
这是个测试