0

私はこの文を評価しようとします:

<font color="0.839216,0.839216,0.839216" strokeColor="none" size="35" face="Avenir-Book">

color 属性の 3 つの float 値を抽出する必要があります

このコードで:

NSRegularExpression* colorRegex = [[[NSRegularExpression alloc] initWithPattern:@"color=([0-9]+),([0-9]+),([0-9]+)" options:0 error:NULL] autorelease];

[colorRegex enumerateMatchesInString:tag options:0 range:NSMakeRange(0, [tag length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){


NSNumber *redComponent=[NSNumber numberWithFloat: [[tag substringWithRange: match.range] floatValue] ];
NSNumber *greenComponent=[NSNumber numberWithFloat: [[tag substringWithRange: match.range ] floatValue] ];
NSNumber *blueComponent=[NSNumber numberWithFloat: [[tag substringWithRange: match.range] floatValue] ];

self.color=[[UIColor alloc] initWithRed:redComponent.floatValue green:greenComponent.floatValue blue:blueComponent.floatValue alpha:1];

NSLog(@"color %@,%@,%@",redComponent,greenComponent,blueComponent);

いくつかの正規表現をテストしましたが、成功しませんでした。誰か助けてもらえますか?

4

3 に答える 3

0

パターンは引用符"とドット.に一致しないため、次のようになります。

initWithPattern:@"color=\"([0-9.]+),([0-9.]+),([0-9.]+)\""

ブロック内でrangeAtIndex:は、キャプチャ グループの値を取得するために使用する必要があるため、次のようになります (コードを少し簡略化します)。

float redComponent = [[tag substringWithRange: [match rangeAtIndex:1]] floatValue];
float greenComponent = [[tag substringWithRange: [match rangeAtIndex:2]] floatValue];
float blueComponent = [[tag substringWithRange: [match rangeAtIndex:3]] floatValue];
self.color = [[UIColor alloc] initWithRed:redComponent green:greenComponent blue:blueComponent alpha:1];

NSLog(@"color %f,%f,%f", redComponent, greenComponent, blueComponent);
于 2013-05-14T09:51:38.467 に答える