我想在字符'='后面过滤字符串。例如,如果8 + 9 = 17我的输出应该是17.我可以使用NSScanner在'='之前过滤字符,如何做它的反向?我需要一个有效的方式来做到这一点,而无需使用componentsSeparatedByString或创建一个数组如何在iOS中的特定字符后过滤字符串?
回答
每个人似乎都喜欢用componentsSeparatedByString
但这是相当无效的当你只想要一部分字符串时。
试试这个:
NSString *str = @"8+9=17";
NSRange equalRange = [str rangeOfString:@"=" options:NSBackwardsSearch];
if (equalRange.location != NSNotFound) {
NSString *result = [str substringFromIndex:equalRange.location + equalRange.length];
NSLog(@"The result = %@", result);
} else {
NSLog(@"There is no = in the string");
}
更新:
注 - 这个具体的例子,如果只被做一次它在效率的差别可以忽略不计。
但一般来说,使用componentsSeparatedByString:
将扫描整个字符串以查找每个分隔符的出现次数。然后它会创建一个包含所有子字符串的数组。当你需要这些子串中的大部分时,这很好。
当你只需要一个较大的字符串的一部分,这是非常浪费。没有必要扫描整个字符串。没有必要创建一个数组。没有必要获得所有其他子串。
+1,因为我已经有一个模糊的想法,你是对的。你能解释一下相对的优点吗?我建议OP接受你的回答而不是我的回答。 –
请参阅我的更新以获取解释。 – rmaddy
NSArray * array = [string componentsSeparatedByString:@"="];
if (array)
{
NSString * desiredString = (NSString *)[array lastObject]; //or whichever the index
}
else
{
NSLog(@""); //report error - = not found. Of array could somehow be not created.
}
注: 虽然这是很受欢迎的分裂溶液中,它是唯一值得尝试的,只要每串通过分隔字符串分隔是必需的。 rmaddy的回答提出了更好的机制,只要需要的只是获得一小部分字符串。无论何时只需要一小部分字符串,都可以使用该方法代替此方法。
使用此:
NSString *a [email protected]"4+6=10";
NSLog(@"%@",[a componentsSeparatedByString:@"="])
;
Log: Practice[7582:11303] (
"4+6",
10
)
尝试使用这一
NSArray *arr = [string componentsSeparatedByString:@"="];
if (arr.count > 0)
{
NSString * firstString = [arr objectAtIndex:0];
NSString * secondString = [arr objectAtIndex:1];
NSLog(@"First String %@",firstString);
NSLog(@"Second String %@",secondString);
}
输出
第一个字符串8 + 9
第二弦乐17
如果字符串中没有'=',这段代码就会崩溃。 – rmaddy
第一个NSLog应该是NSLog(@“First String%@”,firstString); –
@PradeepReddyKyp感谢您的纠正。 –
- 1. MongoDB:如何过滤只包含特定字符的字符串?
- 2. 如何在字符串中的特定字符串之后插入字符串?
- 3. 如何在javascript中的特定字符后修整字符串
- 4. 如何在字符串的特定子字符串之后获取字符串?
- 5. 如何在读取特定字符串后添加字符串?
- 6. 如何过滤字符串
- 7. 如何过滤字符串
- 8. 如何获得特定字符后的字符串的字母
- 9. 如何获得特定字符串后的字符串?
- 10. 特定字符后字符串匹配
- 11. 如何在特定字符后切割一个字符串?
- 12. Rails:如何在特定字符后分割字符串
- 13. 如何删除特定字符后的字符串中的最后一个字
- 14. 如何过滤SQL中的字符串?
- 15. 如何过滤字符串中的点?
- 16. 如何在ksh中的特定字符串之后提取子字符串?
- 17. 如何过滤包含特定字符串的整行
- 18. 过滤字符串
- 19. 过滤字符串
- 20. 过滤字符串
- 21. iOS - 字符串 - 在特定位置插入字符串
- 22. 如何在VB.NET中检测字符串中的特定字符?
- 23. 如何在Ruby中修改字符串中的特定字符?
- 24. 在MongoDB上,如何过滤包含字符串数组的字段包含特定字符串的文档?
- 25. 删除Python中字符串中特定子字符串前后的字符
- 26. 如何使用C++/Boost过滤字符串中的字符
- 27. 如何删除字符串中的特定字符串?
- 28. 如何过滤字母字符的字符串?
- 29. 如何过滤字符串以提取符号后的文本?
- 30. 如何将字符串插入字符串数组中的特定索引并在其后移动字符串?
'componentsSeparatedByString'(in * my * opinion)是最常被滥用的方法之一。为什么创建一个数组?是不是'rangeOfString' +'substringFromIndex'更直接?但是SO回答者和读者似乎很喜欢它! - 对不起,我不得不说一次。 –
马丁R是对的,但我不知道如何rangeOfString选项更好。我会建议接受@ rmaddy的回答,而不是我的回答,方法是按下答案下方的复选标记。 –
您能否解释为什么您对建议的解决方案不满意(例如,使用'componentsSeparatedByString')? – Shai