【问题标题】:Mexican wave in Swift string斯威夫特弦中的墨西哥波
【发布时间】:2021-12-27 01:11:27
【问题描述】:

我需要打印一个字符串,就好像 Mexican Wave 正在通过字符串中的每个字符:

wave("hello") -> ["Hello", "hEllo", "heLlo", "helLo", "hellO"]

目前我停在:

var str = "hel lo"
var arr = [String]()
str = str.lowercased()
str = str.replacingOccurrences(of: " ", with: "")

for i in str {
    arr.append (str.replacingOccurrences(of: "\(i)", with: i.uppercased()))
}
print(arr)

【问题讨论】:

    标签: arrays swift string


    【解决方案1】:

    您可以简单地映射字符串索引并在每次迭代时替换其字符:


    let string = "hello"
    let result = string.indices.map {
        string.replacingCharacters(in: $0...$0, with: string[$0...$0].uppercased()) 
    }
    
    print(result)
    

    这将打印:

    [“你好”、“hEllo”、“heLlo”、“helLo”、“hellO”]

    【讨论】:

    • 在这种情况下,我看到“错误:'String' 类型的值没有成员'replacingCharacters'”
    • 你的 Xcode/Swift 版本是多少?
    • 我检查了 12.4,运行良好!非常感谢这是完美的解决方案
    • 不客气。你知道如何将答案标记为正确吗?
    【解决方案2】:

    经过多次迭代和文档审查,也找到了这个解决方案:

    func wave(_ y: String) -> [String] {
        if y.count == 0 {
            return [String]()
        }
        var wave = [String]()
        for i in y.indices {
            if !y[i].isWhitespace{
                wave.append(y[..<i] + y[i].uppercased() + y[y.index(after: i)...])
            }
        }
        return wave
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 2017-11-13
      • 2015-08-19
      • 2014-09-11
      • 1970-01-01
      相关资源
      最近更新 更多