iOS文字列コンテンツマッチング


単純な文字列マッチングには、次の方法があります.
1、NSStringが持っている関数の方法:
-(BOOL) hasPrefix:(NSString *) astring;文字列がastringで始まるかどうかを確認します.
 
-(BOOL) hasSuffix:(NSString *) astring;文字列がastringで終わるかどうかを確認します.
使用方法:
NSString *filename=@"hello,world";
if([filename hasPrefix:@"hello"]){
...
}
if([filename hasSuffix:@"world"]){
...
}
 
文字列内のどこかに他の文字列が含まれているかどうかを知りたい場合は、rangeOfStringを使用します.
-(NSRange) rangeOfString:(NSString *) astring;
rangeOfString:NSStringオブジェクトに送信するときに渡されるパラメータの検索文字列.NSRange structが返され、この文字列に一致する部分がどこから始まるか、一致する文字数を教えてくれます.
NSRange range=[filename rangeOfString:@"o,world"];
if(range.location!=NSNotFound)
{
    return true;
}
else
{
    return false;
} 

 
2、数値または文字であればASCIIコードで判断できる
3、正規表現:
正規表現入門サイトの推奨(このページの下では、Webサイトについても詳しく説明します):http://deerchao.net/tutorials/regex/regex.htm
 
単純な使用コード:
 
- (BOOL)matchStringFormat:(NSString *)matchedStr withRegex:(NSString *)regex
{
    //SELF MATCHES     
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    
    if([predicate evaluateWithObject:matchedStr] == YES)
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

- (BOOL)isFitNameFormat:(NSString *)inNameStr
{
    if ([self matchStringFormat:inNameStr withRegex:@"^\\w{3,8}$"]) 
    {
        return YES;
    }
    
    return NO;
}

- (BOOL)isFitPasswordFormat:(NSString *)inPasswordStr
{
    if(PasswordLength == inPasswordStr.length)
    {
        //  @"[a-z][A-Z][0-9]{3}"   
        if([self matchStringFormat:inPasswordStr withRegex:@"[a-zA-Z0-9]{3}"])
        {
            return YES;
        }
    }
    
    return NO;
}

- (BOOL)isFitPhoneFormat:(NSString *)inPhoneStr
{
    //     ,[0-9] \d    ,{11}   ,
    if([self matchStringFormat:inPhoneStr withRegex:@"\\d{11}"])
    {
        return YES;
    }
    
    return NO;
}