如果我的字符串包含
NSPredicate
短语,我只需要使用 evaluate
和 .page.link
模式进行检查。
extension String {
func isValid(for string: String) -> Bool {
NSPredicate(format: "SELF MATCHES %@", string).evaluate(with: self)
}
}
let pattern = ".page.link" // "\\.page\\.link"
"joyone.page.link/abcd?title=abcd".isValid(for: pattern) //false
"joyone.page.link".isValid(for: pattern) //false
"joyone.nopage.link/abcd?title=abcd".isValid(for: pattern) //false
我知道有一种更简单的方法可以做到这一点,但它是更大的东西的一部分,我的模式只是枚举中的案例。
前两个应该是
true
.
MATCHES
总是考虑整个字符串。
range(of:options:)
也会说话Regex
而且更容易使用
extension String {
func isValid(for pattern: String) -> Bool {
range(of: pattern, options: .regularExpression) != nil
}
}
当然@vadian的回答很正确,值得推荐,但是这里的解决方法是:
let pattern = "^.{1,}\\.page\\.link.{1,}$"
感谢它考虑整个字符串的评论。