2016-09-13 2 views
1

Javaでは\d = [0-9]\w = [A-Za-z_]と表示されますが、これはiOSとICUで同じですか? dと wのメタキャラクタには国際文字が含まれていますか?

国際的な文字は含めたくありませんが、ドキュメントにはUnicodeの参照のみが含まれています。 Javaでは

+0

このスピーディーまたはObj-C? –

+0

私が覚えているところでは、Javaの '(?U)'とSwiftの '(?u)'は '\ w'をUnicode対応にします。それ以外の場合、 '\ w'は' [a-zA-Z0-9_] 'と一致します。 –

+0

' \ w'が 'é'にマッチするかどうかを調べるのに約1行のコードが必要です。 –

答えて

2

、デフォルトで\wマッチ[a-zA-Z0-9_]、それはあなたが(?U)Pattern.UNICODE_CHARACTER_CLASSフラグ)、this demoを参照してください使用後のUnicode文字に一致します。

String s = "abc śął" 
System.out.println(s.replaceAll("(?U)\\w+", "")); // " " 
System.out.println(s.replaceAll("\\w+", ""));  // " śął" 

のObjective-Cでの、\wは、Unicodeの文字と一致します。

また
NSString * s = @"abcśął"; 
NSString * rx = @"\\w+"; 
NSPredicate * rxTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", rx]; 
if ([rxTest evaluateWithObject:s]) { 
NSLog (@"yes"); 
} 
else 
{ 
NSLog (@"no"); 
} 

This will print yes.the official referenceを参照してください。

\w      単語の文字に一致します。単語の文字は[\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}]です。

\p{}の構文は、一部のカテゴリに該当するUnicode記号に一致します。したがって、\wは基本的にUnicode文字(\p{Ll} - 小文字、\p{Lu} - 大文字、\p{Lt} - タイトルケース文字、\p{Lo} - その他の文字)、および数字(\p{Nd})と一致します。実際、iOSの\w_と一致します(これはドキュメントには表示されないのは不思議です)。

親指のルール:

  • あなただけのASCII文字と一致し、アンダースコア、明確な[a-zA-Z_]を使用する必要がある場合。
  • ASCII数字にのみ一致するようにする場合は、曖昧でない[0-9]を使用してください。
関連する問題