Как можно захватить отдельные символы в строке и поместить их в массив в Swift 4.2? - PullRequest
0 голосов
/ 03 сентября 2018

ЗАКЛЮЧИТЕЛЬНАЯ ЦЕЛЬ: Превратить целые числа в написанную длинную руку.

Я видел некоторые дискуссии по этому поводу, которые у меня над головой. Я сталкивался с функциями, которые с радостью разбивают строку и распечатывают символы, но захват их в массив кажется невозможным.

Кажется, что отдельные символы могут быть доступны по нижнему индексу, но с ними нельзя работать.

Следующее выведет 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]))
    }
}

Любая помощь приветствуется.

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Попробуйте это

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

prints ["1", "2", "9", ".", "5", "0"]

0 голосов
/ 03 сентября 2018

Спасибо всем за отзывы, я закончил с этим, который кажется немного громоздким, но работает:

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 голосов
/ 03 сентября 2018

Это отличное время для изучения 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?

Вы можете сделать это самостоятельно, начать с малого и продолжить свой путь. К тому времени, когда вы закончите, у вас будет рабочая функция и целый ряд тестов, которые докажут , что это работает.

...