Class

NSDataDetector

A specialized regular expression object that matches natural language text for predefined data patterns. ある特殊化された正規表現オブジェクトで、自然言語テキストをあらかじめ定義されたデータパターンと照合します。

Declaration 宣言

class NSDataDetector : NSRegularExpression

Overview 概要

Currently the NSDataDetector class can match dates, addresses, links, phone numbers and transit information. 現在NSDataDetectorクラスは、日付、アドレス、リンク、電話番号および経路情報と照合できます。

The results of matching content is returned as NSTextCheckingResult objects. However, the NSTextCheckingResult objects returned by NSDataDetector are different from those returned by the base class NSRegularExpression. Results returned by NSDataDetector will be of one of the data detectors types, depending on the type of result being returned, and they will have corresponding properties. For example, results of type date have a date, timeZone, and duration; results of type link have a url, and so forth. 照合内容の結果は、NSTextCheckingResultオブジェクトとして返されます。しかしながら、NSTextCheckingResultオブジェクトでNSDataDetectorによって返されるものは、基礎クラスNSRegularExpressionによって返されるものと異なります。NSDataDetectorによって返される結果は、様々あるデータ検出子の1つであって、返される型に依存します、そしてそれらは対応するプロパティを持つでしょう。例えば、型dateの結果は、datetimeZone、そしてdurationを持ちます;型linkの結果はurlの結果を持ちます、など。

Examples

The following shows several graduated examples of using the NSDataDetector class. 以下は、NSDataDetectorクラスを使ういくつかの段階的な見本を示します。

This code fragment creates a data detector that will find URL links and phone numbers. If an error was encountered it is returned in error. このコード断片は、ある1つのデータ検出子を作成します、それはURLリンクと電話番号を見つけます。エラーが出くわされたならばそれはerrorにおいて返されます。


   NSError *error = nil;
   NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink|NSTextCheckingTypePhoneNumber
                                                              error:&error];

Once the data detector instance is created you can determine the number of matches within a range of a string using the NSRegularExpression method numberOfMatches(in:options:range:). 一旦データ検出子インスタンスが作成されるならばあなたは、NSRegularExpressionのメソッドnumberOfMatches(in:options:range:)を使ってある文字列のある範囲内の合致(マッチ)の数を特定できます。


   NSUInteger numberOfMatches = [detector numberOfMatchesInString:string
                                                          options:0
                                                            range:NSMakeRange(0, [string length])];

If you are interested only in the overall range of the first match, the numberOfMatches(in:options:range:) method provides it. However, with data detectors, this is less likely than with regular expressions, because clients usually will be interested in additional information as well. あなたが最初のマッチの範囲全体にだけ興味があるならば、numberOfMatches(in:options:range:)メソッドがそれを提供します。しかしながら、データ検出子では、これは正規表現でよりも起こりそうにありません、なぜなら依頼側は大抵は追加情報にもまた興味があるでしょうから。

The additional information available depends on the type of the result. For results of type link, it is the URL property that is significant. For results of type NSTextCheckingTypePhoneNumber , it is the phoneNumber property instead. 利用可能な情報は結果の型に依存します。型linkの結果に対して、それは有意なURLプロパティです。型NSTextCheckingTypePhoneNumberの結果に対して、それは代わりにphoneNumberプロパティです。

The matches(in:options:range:) method is similar to the firstMatch(in:options:range:), except that it returns all matches rather than only the first. The following code fragment finds all the matches for links and phone numbers in a string. matches(in:options:range:)メソッドは、firstMatch(in:options:range:)に似ています、しかしそれが最初のものだけでなく全てのマッチを返すことを除きます。以下のコード断片は、ある文字列中のリンクと電話番号に対するマッチ全てを見つけます。


   NSArray *matches = [detector matchesInString:string
                                        options:0
                                          range:NSMakeRange(0, [string length])];
   for (NSTextCheckingResult *match in matches) {
        NSRange matchRange = [match range];
        if ([match resultType] == NSTextCheckingTypeLink) {
            NSURL *url = [match URL];
        } else if ([match resultType] == NSTextCheckingTypePhoneNumber) {
            NSString *phoneNumber = [match phoneNumber];
        }
   }

The NSRegularExpression block object enumerator is the most general and flexible of the matching methods. It allows you to iterate through matches in a string, performing arbitrary actions on each as specified by the code in the block, and to stop partway through if desired. In the following code fragment, the iteration is stopped after a certain number of matches have been found. NSRegularExpressionブロックオブジェクト列挙子は、マッチングメソッドの中の最も一般的で柔軟なものです。それはあなたにある文字列中のマッチの始めから終わりまで反復して、随意の動作をそれぞれの上でブロックの中のコードによって指定されるとおりに実行させます、そしてお好みで途中で停止させます。次のコード断片において、反復は特定の数のマッチが見つけられた後に停止されます。


   __block NSUInteger count = 0;
   [detector enumerateMatchesInString:string
                              options:0
                                range:NSMakeRange(0, [string length])
                           usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
        NSRange matchRange = [match range];
        if ([match resultType] == NSTextCheckingTypeLink) {
            NSURL *url = [match URL];
        } else if ([match resultType] == NSTextCheckingTypePhoneNumber) {
            NSString *phoneNumber = [match phoneNumber];
        }
        if (++count >= 100) *stop = YES;
   }];

Topics 話題

Creating Data Detector Instances データ検出子インスタンスを作成する

Getting the Checking Types 型の取得と検査

Relationships 関係

Inherits From 継承元

See Also 参照

Pattern Matching パターンマッチング