繁体   English   中英

如何将函数添加到Swift作为String的扩展以简化使用

[英]How can I add a function to Swift as an extension to String to simplify usage

我有一个函数编码为:

func deleteEnclosedString(s: String, startString s1:String, endString s2: String) -> String { 
} 

我想创建一个子class ,它被分为String ,我在其中定义一个函数并按如下方式使用它:

var myString = "A [typical] string"
myString.deleteEnclosedString(startString: "[", endString: "]")

您可以通过以下方式执行此操作:

extension String {
   func deleteEnclosedString (startString s1: String, endString s2: String) -> String {
       return self.stringByReplacingOccurrencesOfString("\(s1)(.*)\(s2)", withString: "", options: .RegularExpressionSearch, range: nil)
   }    
}

扩展为现有的类,结构或枚举类型添加新功能。 这包括扩展您无法访问原始源代码的类型的能力(称为追溯建模)。

您可以通过以下方式调用上述函数:

var rest = "A [typical] string".deleteEnclosedString(startString: "\\[", endString: "\\]")

上面的函数是使用正则表达式删除传递的startStringendString的单词的示例,它仅供参考。

我希望这对你有帮助。

您还可以使用String方法componentsSeparatedByString并返回第一个和最后一个组件,如下所示:

var myString = "A [typical] string"

extension String {
    func deleteEnclosedString(#from: String, to: String ) -> String {
        return componentsSeparatedByString(from).first! + componentsSeparatedByString(to).last!
    }
}
println( myString.deleteEnclosedString(from: "[", to: "]") )  // "A  string"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM