当我使用以下代码从网址开头删除http://
和www.
时,我收到错误。
var error: NSError? = nil
let regex = NSRegularExpression(pattern: "^(http(s)?://)?(www(\\d)?\\.)?", options: nil, error: &error)
var stringy = "http://www.google.com/"
regex.replaceMatchesInString(stringy, options: nil, range: NSMakeRange(0, countElements(stringy)), withTemplate: "")
错误是:
' NSString的'不是' NSMutableString'
的子类型
我该如何解决这个问题?我做错了什么?
答案 0 :(得分:3)
您只需使用stringy
构建NSMutableString
即可NSMutableString(string: ...)
nil
。您还需要做一些其他事情来使代码工作:
NSMatchingOptions.allZeros
选项。如果您不想传递任何选项,则正确的值为init
NSRegularExpression
的{{1}}方法返回一个Optional(NSRegularExpression?
),因此您需要使用可选链接来调用{{1} }}。 (在Xcode 6.0.1中可能不是这种情况;我不确定何时进行了更改)regex?.replaceMatchesInString
现在是stringy
,因此您无法在其上调用NSMutableString
。只需使用countElements()
的长度属性即可。有了这些更改后,代码如下所示:
NSString
然后在执行输出后调用var error: NSError? = nil
let regex = NSRegularExpression(pattern: "^(http(s)?://)?(www(\\d)?\\.)?",
options: nil, error: &error)
var stringy = NSMutableString(string: "http://www.google.com")
regex?.replaceMatchesInString(stringy, options: NSMatchingOptions.allZeros,
range: NSMakeRange(0, stringy.length), withTemplate: "")
:
google.com
答案 1 :(得分:2)
让我知道这是否能让你到达目的地:
let oldString = "http://www.google.com/"
let newString = oldString.stringByReplacingOccurrencesOfString("^(http(s)?://)?(www(\\d)?\\.)?", withString:"" as NSString, options:NSStringCompareOptions.RegularExpressionSearch, range:nil)
println(newString) // google.com/