【问题标题】:Swift Put String to Array from one to all lettersSwift将字符串从一个到所有字母放入数组
【发布时间】:2020-04-16 13:58:06
【问题描述】:

我想以编程方式将字符串添加到数组中,但从第一个字母到最后一个字母。但不是每个字母都分开。

类似这样的:

我试过了:

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
} 

【问题讨论】:

  • 你应该先尝试一下。
  • 请提供您为此而努力的任何代码,以便我们查看在哪里可以帮助指导您。
  • 一个简单的 for 循环就可以完成这项工作。您有项目数(字母数),然后可以迭代。您可以使用dropLast() 子串...您尝试过什么吗?
  • 我试过这个: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 }

标签: ios arrays swift string


【解决方案1】:
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) }
}

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

"????".?

【讨论】:

    【解决方案2】:

    你可以使用这样的东西

    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)
    

    【讨论】:

    • "Array(str)" 是不必要的。你可以做for char in strString 已经直接符合Sequence
    【解决方案3】:

    你可以使用reduce,它会迭代字符并让你访问所有迭代的字符:

    let usernameAsArray = "julius".reduce([]) { $0 + [($0.last ?? "") + "\($1)"] }
    

    【讨论】:

      【解决方案4】:

      您可以使用reduce。请参考苹果官方文档reduce(::)方法

      代码:

      "Julius".reduce([]) { $0 + [($0.last ?? "") + "\($1)"] }
      

      【讨论】:

        【解决方案5】:

        试试这个功能。

        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"]
        

        【讨论】:

        • 我一遍又一遍地测试了这个答案,它是正确的。有人可以解释为什么我的答案被标记为错误吗?或者如果它被标记为错误,请更正它。
        猜你喜欢
        • 2019-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-13
        • 2013-12-23
        • 2019-08-21
        • 1970-01-01
        • 2022-01-09
        相关资源
        最近更新 更多