相关疑难解决方法(0)

Swift提取正则表达式匹配

我想从匹配正则表达式模式的字符串中提取子字符串.

所以我正在寻找这样的东西:

func matchesForRegexInText(regex: String!, text: String!) -> [String] {
   ???
}
Run Code Online (Sandbox Code Playgroud)

所以这就是我所拥有的:

func matchesForRegexInText(regex: String!, text: String!) -> [String] {

    var regex = NSRegularExpression(pattern: regex, 
        options: nil, error: nil)

    var results = regex.matchesInString(text, 
        options: nil, range: NSMakeRange(0, countElements(text))) 
            as Array<NSTextCheckingResult>

    /// ???

    return ...
}
Run Code Online (Sandbox Code Playgroud)

问题是,这matchesInString提供了我的一个数组NSTextCheckingResult,其中NSTextCheckingResult.range的类型的NSRange.

NSRange是不相容的Range<String.Index>,所以它阻止我使用text.substringWithRange(...)

有没有想过如何在没有太多代码的情况下在swift中实现这个简单的事情?

regex string ios swift

157
推荐指数
8
解决办法
11万
查看次数

Swift查找所有出现的子字符串

我在Swift中有一个String类的扩展,它返回给定子字符串的第一个字母的索引.

任何人都可以帮助我做到这一点,它将返回所有出现的数组,而不仅仅是第一个?

谢谢.

extension String {
    func indexOf(string : String) -> Int {
        var index = -1
        if let range = self.range(of : string) {
            if !range.isEmpty {
                index = distance(from : self.startIndex, to : range.lowerBound)
            }
        }
        return index
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,而不是50我想要的返回值[50, 74, 91, 103]

string swift swift3

17
推荐指数
4
解决办法
8751
查看次数

当表情符号存在时,使用 NSRegularExpression 会产生不正确的范围

我正在尝试从用户提供的字符串中解析出“@mentions”。正则表达式本身似乎可以找到它们,但当表情符号存在时,它提供的范围是不正确的。

let text = " @joe "
let tagExpr = try? NSRegularExpression(pattern: "@\\S+")
tagExpr?.enumerateMatches(in: text, range: NSRange(location: 0, length: text.characters.count)) { tag, flags, pointer in
    guard let tag = tag?.range else { return }

    if let newRange = Range(tag, in: text) {
        let replaced = text.replacingCharacters(in: newRange, with: "[email]")
        print(replaced)
    }
}
Run Code Online (Sandbox Code Playgroud)

运行时 tag=(位置:7,长度:2)

并打印出来 [email]oe

预期结果是 [email]

string ios emoji swift

4
推荐指数
1
解决办法
1274
查看次数

标签 统计

string ×3

swift ×3

ios ×2

emoji ×1

regex ×1

swift3 ×1