1

Uniform Type Identifiers (UTI) は、Mac OS X でファイルの種類を識別するための最新の方法です。Apple のドキュメントでは、次のように述べられています。

UTI は、逆ドメイン ネーム システム (DNS) 規則に従う文字列 (CFString) として定義されます。

ただし、LaunchServices の UTI 関連の関数は、UTI を検証する方法を提供しません。つまり、指定された文字列が UTI であり、UTI 文字列形式に準拠しているかどうかを確認します (つまり、有効な文字のみを使用するなど)。

UTI に関するウィキペディアのページには、次のように書かれています。

UTI は逆 DNS 命名構造を使用します。名前には、ASCII 文字の A ~ Z、a ~ z、0 ~ 9、ハイフン (「-」)、ピリオド (「.」)、および U+007F より上のすべての Unicode 文字を含めることができます。[1] コロンとスラッシュは、Macintosh および POSIX ファイル パス規則との互換性のために禁止されています。

UTI を検証するための正規表現はどのようになりますか?

4

1 に答える 1

1

さらに検索すると、ウィキペディアのリバース ドメイン名表記のページで次のことがわかりました。

^[A-Za-z]{2,6}((?!-)\\.[A-Za-z0-9-]{1,63}(?<!-))+$

UTI を含む NSString を検証するために、次の関数を作成しました。

BOOL UTTypeIsValid(NSString *inUTI) {
    NSString *reverseDNSRegEx = @"^[A-Za-z]{2,6}((?!-)\\.[A-Za-z0-9-]{1,63}(?<!-))+$";
    NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", reverseDNSRegEx];
    return [test evaluateWithObject:inUTI];
}
于 2015-12-12T15:43:44.237 に答える