Ios NsRegularExpressions使用逗号分隔多个浮点数

Ios NsRegularExpressions使用逗号分隔多个浮点数,ios,objective-c,nsregularexpression,Ios,Objective C,Nsregularexpression,我试着评价这句话: <font color="0.839216,0.839216,0.839216" strokeColor="none" size="35" face="Avenir-Book"> 我测试了几个正则表达式,但没有成功,有人能帮我吗 testArray = [[NSArray alloc] init]; NSString *testString = [[NSString alloc] initWithFormat:@"0.309804,0.784314,0.9921

我试着评价这句话:

<font color="0.839216,0.839216,0.839216" strokeColor="none" size="35" face="Avenir-Book">
我测试了几个正则表达式,但没有成功,有人能帮我吗

testArray = [[NSArray alloc] init];
NSString *testString = [[NSString alloc] initWithFormat:@"0.309804,0.784314,0.992157"];
testArray = [testString componentsSeparatedByString:@","];
现在,您可以使用testArray中的值。您还可以将其转换为int或float,请尝试以下操作:

NSString *color = @"color=0.309804,0.784314,0.992157";
color = [color stringByReplacingOccurrencesOfString:@"color=" withString:@""];
NSArray *arrColor = [color componentsSeparatedByString:@","];

NSNumber *redComponent;
NSNumber *greenComponent;
NSNumber *blueComponent;

for (int i = 0; i < [arrColor count]; i++) {
    if (i == 0)   redComponent=[NSNumber numberWithFloat:[[arrColor objectAtIndex:i] floatValue]];
    if (i == 1)   greenComponent=[NSNumber numberWithFloat:[[arrColor objectAtIndex:i] floatValue]];
    if (i == 2)   blueComponent=[NSNumber numberWithFloat:[[arrColor objectAtIndex:i] floatValue]];
}
NSLog(@"color %@,%@,%@",redComponent,greenComponent,blueComponent);
NSString*color=@“color=0.309804,0.784314,0.992157”;
color=[color stringByReplacingOccurrencesOfString:@“color=”with string:@“];
NSArray*arrColor=[颜色分量由字符串分隔:@“,”];
NSNumber*红色组件;
NSNumber*绿色组件;
NSNumber*蓝色组件;
对于(int i=0;i<[arrColor count];i++){
如果(i==0)redComponent=[NSNumber numberWithFloat:[[arrColor objectAtIndex:i]floatValue]];
如果(i==1)greenComponent=[NSNumber numberWithFloat:[[arrColor objectAtIndex:i]floatValue]];
如果(i==2)blueComponent=[NSNumber numberWithFloat:[[arrColor objectAtIndex:i]floatValue]];
}
NSLog(@“颜色%@、%@、%@)、红色组件、绿色组件、蓝色组件);
输出:


颜色0.309804,0.784314,0.992157

您的图案与引号
和点
不匹配,因此它应该看起来像:

initWithPattern:@"color=\"([0-9.]+),([0-9.]+),([0-9.]+)\""
在块内部,您必须使用
rangeAtIndex:
来获取捕获组的值,因此这看起来像(稍微简化代码):


您正在NSLog中为NSNumber使用%@…
NSLog(@“color%@、%@、%@)、redComponent、greenComponent、blueComponent);
这应该是
NSLog(@“color%@、%@、%@、%@、[redComponent stringValue]、[greenComponent stringValue]、[blueComponent stringValue])
@AhmedZ.:使用
%@
作为
NSNumber
一点问题都没有。谢谢你的回答,但给了我这个结果颜色0,0.784314,0.992157你的颜色字符串有相同的值吗?
initWithPattern:@"color=\"([0-9.]+),([0-9.]+),([0-9.]+)\""
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);