根据条件分离字符串

时间:2012-06-17 13:38:19

标签: objective-c ios string chars chemistry

我正在为学校创建一个iOS项目,它可以用于化学反应。

用户将有一个文本字段来插入等式:

Fe3O4 + CO = 3FeO + CO2

我的目标是根据某些条件将其分成几部分:

- 找一个大写字母,然后测试下一个字母是否也是一个大写字母(例如:Fe)。 - 如果每个元素的最后一个字符后面有一个数字,则查找。 - 找一个+号表示不同的组件。

当然,我不是要求代码,但我会感激一些帮助。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以通过“=”和“+”分隔字符串,然后检查字符是小写字母还是大写字母

检查此代码

NSString *str = @"Fe3O4 + CO = 3FeO + CO2";
NSArray *arr = [str componentsSeparatedByString:@"="];

NSMutableArray *allComponents = [[NSMutableArray alloc] init];

for (NSString *component in arr) {
    NSArray *arrComponents = [component componentsSeparatedByString:@"+"];
    [allComponents addObjectsFromArray:arrComponents];
}

for (NSString *componentInEquation in allComponents) {
    for (int i = 0 ; i < componentInEquation.length ; i++) {
        char c = [componentInEquation characterAtIndex:i];
        if ('A' < c && c < 'Z') {
            //Small letter
            NSLog(@"%c, Capital letter", c);
        }
        else if ('0' < c && c < '9') {
            NSLog(@"%c, Number letter", c);
        }
        else if ('a' < c && c < 'z') {
            NSLog(@"%c, Small letter", c);
        }
        else {
            NSLog(@"%c Every other character", c);
        }
    }
}

现在你必须进行自己的计算和字符串操作,但是你有一个良好的开端祝你好运:)

答案 1 :(得分:0)

请参阅:isdigit, isupper, islower
试试这个:

NSString *str = @"Fe3O4 + CO = 3FeO + CO2";
NSArray *allComponents =[str componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"+="]];

for (NSString *componet in allComponents) {
    for (int i=0; i<componet.length; i++) {
        if (isdigit([componet characterAtIndex:i])) {
            NSLog(@"%c is Digit",[componet characterAtIndex:i]);
        }else if(isupper([componet characterAtIndex:i])) {
            NSLog(@"%c is uppercase",[componet characterAtIndex:i]);
        }else if (islower([componet characterAtIndex:i])) {
            NSLog(@"%c is lowercase",[componet characterAtIndex:i]);
        } else{
            NSLog(@"Every other character ");
        }


    }
}