我有一個太長的字符串,我想查找並找到所有需要的單詞。例如,我想查找字符串中所有「蘋果」的位置。你能告訴我我是怎麼做到的嗎? 謝謝在字符串中查找所有想要的單詞
回答
重複應用std::string::find
如果您使用的是C++字符串,或者std::strstr
如果您使用的是C字符串;在這兩種情況下,在每次迭代中,在最後一次匹配後開始搜索n個字符,其中n是單詞的長度。
std::string str="one apple two apples three apples";
std::string search="apple";
for(std::string::size_type pos=0; pos<str.size(); pos+=search.size())
{
pos=str.find(search, pos);
if(pos==std::string::npos)
break;
std::cout<<"Match found at: "<<pos<<std::endl;
}
(link)
這不會找到重疊的匹配 - 例如對於模式眼睛和眼睛線眼睛而言,迄今爲止給出的所有答案只能找到第一個出現。 – 2012-07-06 13:12:49
我認爲如果匹配在字符串的末尾,就會中斷。如果'str'會以'apple'結尾。在這種情況下,你可以調用'std :: string :: find(search,pos);',其值'pos'等於'size()'。不確定這是否允許。 – 2012-07-06 13:18:32
@IvanVergiliev:如果這是你想要的,取決於你想用這個函數實現什麼規範(這兩個規範都有有效的用例);仍然,所有需要的是將'pos + = ...'改爲'pos ++'。 – 2012-07-06 18:55:27
使用一個循環反覆調用std::string::find
;在每次迭代,你開始尋找超越你最後的命中:
std::vector<std::string::size_type> indicesOf(const std::string &s,
const std::string &needle)
{
std::vector<std::string::size_type> indices;
std::string::size_type p = 0;
while (p < s.size()) {
std::string::size_type q = s.find(needle, p);
if (q == std::string::npos) {
break;
}
indices.push_back(q);
p = q + needle.size(); // change needle.size() to 1 for overlapping matches
}
return indices;
}
void findApples(const char* someString)
{
const char* loc = NULL;
while ((loc = strstr(someString, "apple")) != NULL) {
// do something
someString = loc + strlen("apple");
}
}
鑑於qustion是關於C++的,我會考慮一個關於'std :: string'的回答更合適。 – 2012-07-06 13:01:01
- 1. indexOf在字符串中查找所有出現的單詞
- 2. 檢查列表包含在字符串中的所有單詞
- 3. MongoDB - 在多個字段中查找所有搜索字符串單詞
- 4. 字符串查找單詞的Javascript
- 5. 想要除去單詞中第一個字符以外的所有字符
- 6. 查找字符串中的2個預定字詞之間的所有字符
- 7. 在vba詞中查找單詞後插入字符串
- 8. 查找匹配多個數組鍵的字符串中的所有單詞
- 9. Regexmatch查找匹配多個單詞的所有字符串單元
- 10. 用於查找字符串中所有單詞的Python正則表達式
- 11. 如何查找字符串中所有單詞的出現次數
- 12. 如何在java中查找字符串中的整個單詞
- 13. 在java中查找字符串中的最小單詞
- 14. 查找字符串中子字符串的所有實例
- 15. 查找字符串中子字符串的所有索引
- 16. Java查找字符串中的詞
- 17. 查找字符串中的單詞的簡單代碼
- 18. 想要在某個單詞後分割一個字符串?
- 19. 在bash中選擇字符串中的所有單詞對
- 20. C#查找除2個字符以外的所有單詞
- 21. 在字符串中查找重複的單詞python
- 22. 在字符串中查找匹配的短語和單詞python
- 23. 查找和比較字符串中單個單詞的長度
- 24. 字符串匹配 - 查找被評估字符串中相同單詞的所有匹配項
- 25. 如何獲得在c#中的字符串的所有單詞?
- 26. 查找字符串中每個單詞的第一個字母
- 27. 在字符串中查找子字符串,但僅限於整個單詞?
- 28. 查找在Java中的字符串中出現的所有子字符串
- 29. 我需要此程序來查找Java中字符串中最長的單詞
- 30. java程序找到給定字符串中的所有字典單詞
查找到的boost ::正則表達式,如果你需要匹配更復雜的東西。否則,堅持Frerich Raabe的回答。 – 2012-07-06 13:02:36