我想在字符'='後面過濾字符串。例如,如果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