如何捕获字符串中的单个字符并将它们放在Swift 4.2中的数组中?

问题描述 投票:0回答:3

最终目标:将整数转换为书面长手。

我已经看到了一些关于这个问题的讨论。我遇到了很多函数,它们很乐意分解字符串并打印出字符但是在数组中捕获它们似乎是不可能的。

似乎可以通过下标访问单个字符,但不能对它们进行操作。

如果我删除了注释,下面将打印出1,2,9,。,5,0但是当我运行if循环时,我得到了写入数字字符串但序列错误。

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]))
    }
}

任何帮助赞赏。

swift swift4.2
3个回答
1
投票

这是您学习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?

你可以自己做,从小做起,然后继续前进。当你完成时,你将拥有一个工作函数和一大堆证明它有效的测试。


1
投票

试试这个

    let str = "129.50"
    let array = Array(str)
    print(array)

打印[“1”,“2”,“9”,“。”,“5”,“0”]


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)产生

一个八小数niner fife

© www.soinside.com 2019 - 2024. All rights reserved.