Javaでは\d
= [0-9]
と\w
= [A-Za-z_]
と表示されますが、これはiOSとICUで同じですか? dと wのメタキャラクタには国際文字が含まれていますか?
国際的な文字は含めたくありませんが、ドキュメントにはUnicodeの参照のみが含まれています。 Javaでは
Javaでは\d
= [0-9]
と\w
= [A-Za-z_]
と表示されますが、これはiOSとICUで同じですか? dと wのメタキャラクタには国際文字が含まれていますか?
国際的な文字は含めたくありませんが、ドキュメントにはUnicodeの参照のみが含まれています。 Javaでは
、デフォルトで\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
も_
と一致します(これはドキュメントには表示されないのは不思議です)。
親指のルール:
[a-zA-Z_]
を使用する必要がある場合。[0-9]
を使用してください。
このスピーディーまたはObj-C? –
私が覚えているところでは、Javaの '(?U)'とSwiftの '(?u)'は '\ w'をUnicode対応にします。それ以外の場合、 '\ w'は' [a-zA-Z0-9_] 'と一致します。 –
' \ w'が 'é'にマッチするかどうかを調べるのに約1行のコードが必要です。 –