0
我使用正則表達式在textView中進行搜索。所有的正常工作與簡單的字符串,但是當我試圖進入只有一個正則表達式運算符的一部分,我收到了現金的錯誤:如果正則表達式有效,如何檢查Swift?
Error Domain=NSCocoaErrorDomain Code=2048 "The value 「\」 is invalid." UserInfo={NSInvalidValue=\}
例如,如果我輸入「\ n」它的工作原理,但如果我只輸入「\」(不含引號),我得到崩潰。我無法做的是找到一種方法來檢查表達式之前使用它。
我使用這個代碼部分基於this tutorialthis answer by Wiktor Stribiżew:
extension NSRegularExpression {
convenience init?(options: SearchOptions) {
let searchString = options.searchString
let isCaseSensitive = options.matchCase // set to true
let isWholeWords = options.wholeWords // set to false
let escapeMetacharacters = options.escapeMetacharacters // set to false
// handle case sensitive option
var regexOption: NSRegularExpressionOptions = .CaseInsensitive
if isCaseSensitive { // if it is match case remove case sensitive option
regexOption = []
}
// put the search string in the pattern
var pattern = searchString
if isWholeWords {
pattern = "(?<!\\w)" + NSRegularExpression.escapedPatternForString(searchString) + "(?!\\w)"
}
do {
try self.init(pattern: pattern, options: regexOption)
} catch {
print(error)
}
}
}
嗨OOPer,謝謝你的回答。我確定它適用於大多數實現,不幸的是,在我的情況下,它失敗了,也許我做錯了什麼。此外,隨着返回尼羅河和安全檢查實施我反正與這個錯誤崩潰'錯誤域= NSCocoaErrorDomain代碼= 2048「值」\「是無效的。」的UserInfo = {NSInvalidValue = \}」。我嘗試了不同的實現,但由於我的經驗不足,我認爲這將是一段非常漫長的旅程...... – Cue
對不起,結果很糟糕。當您找到其他信息告訴我們時,請編輯您的問題並添加它。我或許多其他讀者會幫助你。 – OOPer
非常感謝。我注意到如果我刪除了「打印(錯誤)」行,我得到一個不同的錯誤:對象0x7c874b80的malloc:***錯誤:釋放指針未分配***設置malloc_error_break中的斷點來調試。我會嘗試逐步調試。 – Cue