我正在为学校创建一个iOS项目,它可以用于化学反应。
用户将有一个文本字段来插入等式:
Fe3O4 + CO = 3FeO + CO2
我的目标是根据某些条件将其分成几部分:
- 找一个大写字母,然后测试下一个字母是否也是一个大写字母(例如:Fe)。 - 如果每个元素的最后一个字符后面有一个数字,则查找。 - 找一个+号表示不同的组件。
当然,我不是要求代码,但我会感激一些帮助。
提前致谢。
答案 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 ");
}
}
}