【问题标题】:Replace specific characters in string in Swift在 Swift 中替换字符串中的特定字符
【发布时间】:2019-01-14 15:29:47
【问题描述】:

我目前正在尝试使用 Swift 3 替换字符串中的特定字符。

var str = "Hello"    
var replace = str.replacingOccurrences(of: "Hello", with: "_____")    
print(replace)

这将打印:_____ 但我的问题发生在 str 更改并由不同数量的字符或多个单词组成时,例如:

var str = "Hello World"

现在我希望替换变量在str 更改时自动更新。除“空格”外的所有字符都应替换为 _,然后打印 _____ _____ 应该代表 Hello World。

如何实现?

【问题讨论】:

    标签: swift replace swift3


    【解决方案1】:

    如果要替换所有单词字符,可以将regularExpressions输入到之前使用的相同函数的options参数,只需将特定的String输入更改为\\w,它将匹配任何单词字符。

    let str = "Hello World"
    let replace = str.replacingOccurrences(of: "\\w", with: "_", options: .regularExpression) // "_____ _____"
    

    请记住,\\w 也不会替换其他特殊字符,因此对于 "Hello World!" 的输入,它将生成 "_____ _____!"。如果要替换除空格以外的所有字符,请使用\\S

    let replace = str.replacingOccurrences(of: "\\S", with: "_", options: .regularExpression)
    

    【讨论】:

      【解决方案2】:

      除“空格”外的所有字符都应替换为_

      有多种选择。你可以map()每个字符对其进行替换,并将结果组合成一个字符串:

      let s = "Swift is great"
      let t = String(s.map { $0 == " " ? $0 : "_" })
      print(t) // _____ __ _____
      

      或者使用正则表达式,\S 是“不是空白字符”的模式:

      let t = s.replacingOccurrences(of: "\\S", with: "_", options: .regularExpression)
      print(t) // _____ __ _____
      

      【讨论】:

      • 这是 Swift 4。如果你真的还在使用 Swift 3,那么它会像 String(s.characters.map { ... })
      猜你喜欢
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多