0

次の正規表現を取得して、英数字の入力ボックスから文字のみを取得しようとしていますが、AZ文字ではなく、常に完全な文字列を返します。

私は何が間違っているのですか?

すべての文字だけを取得する必要があります。奇妙な文字や数字はありません。AZだけを文字列に入れて、後で使用できるようにします。

// A default follows
NSString *TAXCODE = txtTaxCode.text;

// Setup default for taxcode
if ([TAXCODE length] ==0)
{
    TAXCODE = @"647L";
}


NSError *error = NULL;
NSRegularExpression *regex;

regex = [NSRegularExpression regularExpressionWithPattern:@"/[^A-Z]/gi" 
                                                  options:NSRegularExpressionCaseInsensitive
                                                    error:&error];

NSLog(@"TAXCODE = %@", TAXCODE);
NSLog(@"TAXCODE.length = %d", [TAXCODE length]);


NSLog(@"STC (before regex) = %@", STC);


STC = [regex stringByReplacingMatchesInString:TAXCODE
                                      options:0
                                        range:NSMakeRange(0, [TAXCODE length])
                                 withTemplate:@""];
NSLog(@"STC (after regex) = %@", STC);

私のデバッグ出力は次のとおりです。

TAXCODE = 647L

TAXCODE.length = 4

STC(正規表現の前)=

STC(正規表現後)= 647L

4

2 に答える 2

1

正規表現にperl構文をドロップする必要があると思います。一致文字列として@"[^AZ]"を使用します。

于 2011-03-18T15:32:09.853 に答える
1

片端だけに文字を付ける場合は、使用できます。

 NSString *TAXCODE =@"647L";
NSString *newcode =  [TAXCODE stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];

文字が混在している場合は、配列を取得して、それで遊ぶことができます。

NSString *TAXCODE =@"L6J47L";
NSArray *newcodeArray =  [TAXCODE componentsSeparatedByCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];
于 2011-03-18T16:23:58.557 に答える