Swift Put String to Array от одной до всех букв - PullRequest
0 голосов
/ 16 апреля 2020

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

примерно так:

enter image description here

Я пробовал это:

let username = "Julius" //(1)
var name = "" //(2) 
var i:Int! = 0 
while i != username.count { 
    i += 1 
    //get nth(i) char of String(1) 
    //add char to String (2) 
    //add to Array
} 

Ответы [ 5 ]

1 голос
/ 17 апреля 2020
let string = "?Julius"

// ["?", "?J", "?Ju", "?Jul", "?Juli", "?Juliu", "?Julius"]
(1...string.count).map(string.prefix)

или

string.enumerated().map { string.prefix($0.offset + 1) }

… который пропускает обход строки, но является более уродливым. Наверное, не стоит.

extension String {
  var ?: [Substring] { (1...count).map(prefix) }
}

// "?", "??", "???", "????"]

"????".?

0 голосов
/ 21 апреля 2020

Вы можете использовать reduce. Пожалуйста, обратитесь к официальным документам Apple на уменьшить (: :) метод

Код:

"Julius".reduce([]) { $0 + [($0.last ?? "") + "\($1)"] }
0 голосов
/ 21 апреля 2020

Вы можете использовать reduce, он будет перебирать символы и предоставит вам доступ ко всем повторяющимся символам:

let usernameAsArray = "julius".reduce([]) { $0 + [($0.last ?? "") + "\($1)"] }
0 голосов
/ 17 апреля 2020

Дайте этой функции go.

func addLetters(string: String)->[String]{
    var stringArray = [String]()

    for (i, s) in string.enumerated(){

        if i == 0 {
            stringArray.append(String(s))
        }
        else{
            stringArray.append(stringArray[i - 1] + String(s))
        }

    }
    print(stringArray)
    return stringArray
}

addLetters(string: "Julius")
//Print: ["J", "Ju", "Jul", "Juli", "Juliu", "Julius"]
0 голосов
/ 16 апреля 2020

Вы можете использовать что-то вроде этого

var str = "julius"
var nameArray = [String]()
var item = ""
for char in Array(str) {
     item += String(char)
    nameArray.append(item)
}
print(nameArray)

Редактировать

let str = "julius"
    var nameArray = [String]()
    var item = ""
    for char in str {
         item += String(char)
        nameArray.append(item)
    }
    print(nameArray)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...