2016-08-03 6 views
3

タイ語で書かれた単語があります - >ความรัก NSRegularExpressionを使ってこの単語に一致させるにはどうすればいいですか? 正確な単語を使用しようとしましたが、機能しません。NSRegularExpressionでタイ語で書かれた単語を見つけるには

それもここregex101.com

のようなサイト上で動作していないが、私のコードです(SWIFTバージョン。しかし、SWIFTやOBJのどちらかで回答が理解されます)。次のコードは私のプレイグラウンドファイルにあります。私はいつも偽になり、決して真実にはならない。

let labelString = "ความรัก" 
let regex = try NSRegularExpression(pattern: "ความรัก", options: []) 
let rangeOfFirstMatch = regex.rangeOfFirstMatchInString(labelString, options:.ReportProgress, range:NSRange(location: 0, length: labelString.characters.count)) 
if (!NSEqualRanges(rangeOfFirstMatch, NSRange(location: NSNotFound, length: 0))) { 
    print(true) 
} else { 
    print(false) 
} 

ただし、単語を "man"という単語に置き換えた場合、私はいつも欠陥がここに常駐

+1

コードと正規表現を投稿してください。 –

+0

なぜこの質問に客観的なタグが付けられましたか? – Avi

答えて

6

真取得:

NSRange(location: 0, length: labelString.characters.count) 

NSRegularExpressionはUTF-16ベースのカウントとオフセットを使用していますので、あなたは、UTF-16ベースの位置や長さを含む範囲を渡す必要があります。

let rangeOfFirstMatch = regex.rangeOfFirstMatchInString(labelString, 
    options:.ReportProgress, 
    range:NSRange(location: 0, length: labelString.utf16.count)) 

そして、私はこの表記(相当する機能を)好む:

NSRangeこれに含む行を変更してみてください

let rangeOfFirstMatch = regex.rangeOfFirstMatchInString(labelString, 
    options:.ReportProgress, 
    range:NSRange(0..<labelString.utf16.count)) 

(私はわからないんだけど、あなたが本当に.ReportProgressを必要とします?)

+0

あなたは正しいです。報告の進捗状況は必要ありません。だから私はそれを削除しました。あなたの答えが働く。ありがとう、ミル。 –

関連する問題