如何在Swift 4.2中捕获字符串中的单个字符并将其放入数组中?
最终目标:将整数变成手写的手写体 我看到一些关于这一点的讨论超出了我的想象。我遇到过一些函数,它们很高兴地将字符串拆分并打印出字符,但在数组中捕获它们似乎是不可能的 似乎单个字符可以通过下标访问,但不能对其进行操作 如果我删除了注释,但是当我运行if循环时,我得到了写入的数字字符串,但是顺序错误,那么下面将打印出1,2,9,5,0如何在Swift 4.2中捕获字符串中的单个字符并将其放入数组中?,swift,swift4.2,Swift,Swift4.2,最终目标:将整数变成手写的手写体 我看到一些关于这一点的讨论超出了我的想象。我遇到过一些函数,它们很高兴地将字符串拆分并打印出字符,但在数组中捕获它们似乎是不可能的 似乎单个字符可以通过下标访问,但不能对其进行操作 如果我删除了注释,但是当我运行if循环时,我得到了写入的数字字符串,但是顺序错误,那么下面将打印出1,2,9,5,0 let sentence = "129.50" for (character) in sentence { // print(character)
let sentence = "129.50"
for (character) in sentence {
// print(character)
if character == "0" {
print("zero")
}
if character == "1" {
print("one")
}
if character == "2" {
print("two")
}
etc etc
我还尝试通过一个函数访问索引函数,尽管每次它都完整打印出来,但最后总是崩溃
func speakNum(_ num:Int) {
let strgNum = String(num)
for t in 0...strgNum.count {
let index = strgNum.index(strgNum.startIndex, offsetBy:t)
//strgnum.index(strgNum.startIndex, offsetBy:t)
print(String(strgNum[index]))
}
}
感谢您的帮助。这是您学习TDD的绝佳时机。测试驱动开发。从一个简单的案例开始,你能想到的最简单的
assert(writtenOut("1") == "one")
完成上述工作,然后添加另一个测试:
assert(writtenOut("1") == "one")
assert(writtenOut("2") == "two")
对所有数字和小数点进行上述操作。您还应该处理错误情况:
assert(writtenOut("d") == "")
然后尝试更复杂的方法:
assert(writtenOut("12") == "one two") // or do you want "twelve" in this case?
你可以自己做,从小处做起,一路往上爬。当您完成时,您将拥有一个工作函数和一系列测试来证明它的工作。这是学习TDD的绝佳时机。测试驱动开发。从一个简单的案例开始,你能想到的最简单的
assert(writtenOut("1") == "one")
完成上述工作,然后添加另一个测试:
assert(writtenOut("1") == "one")
assert(writtenOut("2") == "two")
对所有数字和小数点进行上述操作。您还应该处理错误情况:
assert(writtenOut("d") == "")
然后尝试更复杂的方法:
assert(writtenOut("12") == "one two") // or do you want "twelve" in this case?
你可以自己做,从小处做起,一路往上爬。当您完成时,您将拥有一个工作函数和一系列测试来证明它的工作。试试这个
let str = "129.50"
let array = Array(str)
print(array)
打印[“1”、“2”、“9”、“5”、“0”]试试这个
let str = "129.50"
let array = Array(str)
print(array)
打印[“1”、“2”、“9”、“5”、“0”]多亏了大家的反馈,我最终得到的结果似乎有点麻烦,但确实有效:
func radio(_ MHz:Double){
let sentence = String(MHz)
for (character) in sentence {
if character == "0" {
print("zero", terminator:" ")
}
if character == "1" {
print("one", terminator:" ")
}
if character == "2" {
print("two", terminator:" ")
}
if character == "3" {
print("tree", terminator:" ")
}
if character == "4" {
print("fower", terminator:" ")
}
if character == "5" {
print("fife", terminator:" ")
}
if character == "6" {
print("six", terminator:" ")
}
if character == "7" {
print("seven", terminator:" ")
}
if character == "8" {
print("eight", terminator:" ")
}
if character == "9" {
print("niner", terminator:" ")
}
if character == "." {
print("decimal", terminator:" ")
}
}
print()
print()
}
因此,无线电(118.65)产生
一个八位小数的九分音符多亏了大家的反馈,我最终得到了这个看似有点麻烦但确实有用的东西:
func radio(_ MHz:Double){
let sentence = String(MHz)
for (character) in sentence {
if character == "0" {
print("zero", terminator:" ")
}
if character == "1" {
print("one", terminator:" ")
}
if character == "2" {
print("two", terminator:" ")
}
if character == "3" {
print("tree", terminator:" ")
}
if character == "4" {
print("fower", terminator:" ")
}
if character == "5" {
print("fife", terminator:" ")
}
if character == "6" {
print("six", terminator:" ")
}
if character == "7" {
print("seven", terminator:" ")
}
if character == "8" {
print("eight", terminator:" ")
}
if character == "9" {
print("niner", terminator:" ")
}
if character == "." {
print("decimal", terminator:" ")
}
}
print()
print()
}
因此,无线电(118.65)产生
0中t的1-8十进制9进制fife
。第一组代码的实际输出是什么?顺便说一句-使用开关
,而不是所有那些if
语句。或者至少使用if-else
,因为在给定的迭代中只有一个是真的。例如,您想得到什么?请添加代码的实际输出,并显示完整的代码示例。Maddy:Ach。。。当然0..对于0中的t..第一组代码实际得到了什么输出?顺便说一句-使用开关
,而不是所有那些if
语句。或者至少使用if-else
,因为在给定的迭代中只有一个是真的。例如,您想得到什么?请添加代码的实际输出,并显示完整的代码示例。Maddy:Ach。。。当然是0。虽然这可能是一个很好的建议,但这个答案实际上并没有试图回答被问到的问题。@rmaddy-“教一个人钓鱼…”,你是对的,丹尼尔不仅试图回答这个问题,而且还试图回答一些未来的问题…@CRD我完全支持“教一个人钓鱼…”的想法,但问答网站也是如此。发布一个答案,解决被问的问题。然后,如果情绪爆发,添加一些有用的额外细节。想象一下,如果这个答案被发布到网站上的每个问题上,这个网站将是多么无用。@rmaddy-但这不是一个平衡的问题吗?对于一些简单的/初学者的问题,只需提供一根棍子和说明,对于困难的/晦涩的问题,请提供详细的答案,等等。您可以看到人们用SO来代替思考/努力提出一个又一个问题的情况-当然,这会增加很多,但它真的对提问者(或他们未来的客户)有帮助吗?可悲的是,人们有时会因为帮助/建议人们思考而感到沮丧,但这并没有帮助。我认为丹尼尔在帮助提问者方面取得了正确的平衡,当然是YMMV。祝您有个美好的一天!虽然这可能是一个很好的建议,但这个答案实际上并没有试图回答被问到的问题。@rmaddy-“教一个人钓鱼…”,你是对的,Daniel并没有试图回答这个问题,还有一些未来的问题…@CRD我完全支持“教一个人钓鱼…”的想法,但问答网站也是如此。发布一个答案,解决被问的问题。然后,如果情绪爆发,添加一些有用的额外细节。想象一下,如果这个答案被发布到网站上的每个问题上,这个网站将是多么无用。@rmaddy-但这不是一个平衡的问题吗?对于一些简单的/初学者的问题,只需提供一根棍子和说明,对于困难的/晦涩的问题,请提供详细的答案,等等。您可以看到人们用SO来代替思考/努力提出一个又一个问题的情况-当然,这会增加很多,但它真的对提问者(或他们未来的客户)有帮助吗?可悲的是,人们有时会因为帮助/建议人们思考而感到沮丧,但这并没有帮助。我认为丹尼尔在帮助提问者方面取得了正确的平衡,当然是YMMV。祝您有个美好的一天!如果可以使用开关,为什么要使用这一大堆if
s?甚至是字典
,其中键
是数字
,值
是数字打印输出字符串?收音机(117.9)连续5次生成默认大小写-我不知道为什么。无法在注释中有效地发布我的开关大小写代码,但它一直保持默认大小写-您确定字符串的for in循环与开关兼容吗?这似乎是一个疯狂的问题,但从一个初学者的角度来看,Swift中似乎有许多不一致之处,尽管我毫不怀疑这只是因为我的无知。这与你的问题中的代码相同。这是如何解决您最初的问题的?为什么要使用这一大堆