【问题标题】:Swift: replace character in string - without stringByReplacingOccurrencesOfStringSwift:替换字符串中的字符 - 没有 stringByReplacingOccurrencesOfString
【发布时间】:2014-07-02 11:10:31
【问题描述】:

好的,所以说我有一个String 喜欢

let myString = "my string: hello"

我想用“,”替换“:”。我做到了这一点:

let characters = map(Array(myString), {$0 == ":" ? "," : $0})

返回MapCollectionView<Array<Character>, Character>。有没有一种简单的方法可以将其转换回String

【问题讨论】:

  • 是否有不使用 stringByReplacingOccurrencesOfString 的特殊原因?
  • 什么都没有,除了好奇。

标签: string replace swift


【解决方案1】:

这个呢?通过使用+“减少”它们将所有字符组合成一个字符串 运营商:

let str = Array(characters).reduce("", combine: +)
println(str)
// Output: my string, hello

更新:另一种(也许更好)解决方案:

var str = ""
str.extend(characters)

使用extend(),可以在没有中间Array的情况下完成字符串替换:

let myString = "my string: hello" as String
var myNewString = ""
myNewString.extend(map(myString.generate(), {$0 == ":" ? "," : $0} ))

【讨论】:

  • @AshleyMills:不客气! - 但是看看更新,也许你也可以使用它。
【解决方案2】:

感谢 Martin R 的回答,我将代码缩减为:

let myString = "my string: hello" as String
let myNewString = Array(myString).reduce("") { $0 + (String($1) == ":" ? "," : String($1)) }

更新

从 Xcode 6.2 测试版开始,以下内容现在可以使用:

let myString = "my string: hello"
let result = String(map(Array(myString)) {$0 == ":" ? "," : $0})

// Output: my string, hello

【讨论】:

    【解决方案3】:

    如何找到你想要的子字符串(也可以是单词)然后替换它们:

    var aString = "Replace the letter e with *"
    
    import Foundation
    while let range: Range<String.Index> =  aString.rangeOfString("e") {
        aString.replaceRange(range, with: "*")
    }
    

    适用于 Xcode 7.0.1

    【讨论】:

      猜你喜欢
      • 2014-01-10
      • 2014-08-23
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多