[英]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: "\\]")
上面的函数是使用正则表达式删除传递的startString
和endString
的单词的示例,它仅供参考。
我希望这对你有帮助。
您还可以使用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.