Swift范围的子字符串 - 带有通配符的搜索字符串

时间:2017-02-26 20:08:48

标签: search swift3 nsstring substring wildcard

是否可以使用通配符在另一个字符串中搜索字符串? 我想找到“”text1“=”text2“”的出现,其中text1和text2可以是任何字符串。

我的初始字符串是

“这是我的字符串。此字符串包含”text1“=”text2“以及更多”

搜索时我不知道text1和text2。 我想过像“”“=”“”这样的东西,但没有结果。

编辑: 让我尝试解释其他的例子。 我有* .swift文件,有两次locX扩展名

        labelPatternForExpresion.stringValue = "labelPatternForExpresion".locX(withComment: "comment one")
    labelPath.stringValue = "labelPathToProject".locX(withComment: "comment six")
    labelHeader.stringValue = "labelFileHeader".locX(withComment: "no comment")
    btnFromFile.title = "btnFromFile".locX(withComment: "empty comment")
    btnCancel.title = "btnCancel".locX(withComment: "")

我需要遍历文件并找到所有对键 - 注释:

“labelPatternForExpresion” - “评论一个”

“labelPathToProject” - “评论六”

........

........

“btnCancel” - “”

1 个答案:

答案 0 :(得分:1)

假设您的模式是:

"textA" - "textB"

您要捕获textAtextB。使用NSRegularExpression

let str = "\"labelPatternForExpresion\" - \"comment one\""

// NSRegularExpression still deals in NSString so let's make a copy to 
// lessen the pain later
let nsStr = str as NSString
let regex = try! NSRegularExpression(pattern: "\"(.+)\" - \"(.+)\"", options: [])

if let match = regex.firstMatch(in: str, options: [], range: NSMakeRange(0, nsStr.length)) {
    let lhs = nsStr.substring(with: match.rangeAt(1))
    let rhs = nsStr.substring(with: match.rangeAt(2))
    print(lhs)
    print(rhs)
}