-1

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

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

Fe3O4 + CO = 3FeO + CO2

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

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

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

提前致谢。

4

2 回答 2

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);
        }
    }
}

现在您将不得不进行自己的计算和字符串操作,但您有一个良好的开端,祝您好运 :)

于 2012-06-17T13:50:29.863 回答
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 ");
        }


    }
}
于 2012-06-18T04:33:49.103 回答