【问题标题】:Swift 3 replacingOccurrences of multiple stringsSwift 3 替换多个字符串的出现
【发布时间】:2017-01-04 02:21:04
【问题描述】:

我的 JavaScript 代码如下所示:

foo.replace(/(\r\n|\n|\r)/gm, "");

基本上这会从我的字符串中删除任何回车符和新行。我想在 Swift 3 中做类似的事情。

我看到func replacingOccurrences(of target: String, with replacement: String, options: CompareOptions = default, range searchRange: Range<Index>? = default) -> String 可用。问题是,这在of 参数中只需要一个字符串。

这是否意味着我需要为上面的每个实例多次调用该方法,一次用于\r\n,一次用于\n\,一次用于\r?无论如何,有没有可能完成一些更接近正则表达式正在做的事情,而不是三次调用replacingOccurrences

【问题讨论】:

  • 注意CompareOptions 的可能值。

标签: swift


【解决方案1】:

使用replacingOccurrences 并将选项设置为regularExpression

let updated = foo.replacingOccurrences(of: "\r\n|\n|\r", with: "", options: .regularExpression)

【讨论】:

  • 请注意,如果您要替换为"" 以外的其他内容(例如","),您可能会得到一个"\n" 和一个"\r"。可能有一种方法可以使正则表达式“贪婪”以避免这种结果。
【解决方案2】:

要替换非数字,您可以使用“\D”作为正则表达式

let numbers = "+1(202)-505-71-17".replacingOccurrences(of: "\\D", with: "", options: .regularExpression)

你可以找到如何使用其他正则表达式here

【讨论】:

  • 这和问题有什么关系?
【解决方案3】:

这个很简单,文档里都有。

let noNewlines = "a\nb\r\nc\r".replacingOccurrences(of: "\r\n|\n|\r", with: "", options: .regularExpression)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-19
    • 2017-07-01
    • 1970-01-01
    • 2021-10-31
    • 2017-04-16
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    相关资源
    最近更新 更多