2015-11-02 36 views
-6

我有一個字符串,如:擦除一個字符串的單詞出現的所有

AAAbbbbbAAA 

我想刪除模式AAA的所有occurances獲得:

bbbbb 

的模式可以發生在字符串的任何地方。

+1

@Linus這是不是真的重複,因爲他想刪除子字符串,而不是取代它。所以string :: erase在這裏更加適合。 –

+0

@oo_miguel他可以用空字符串替換AAA。所以我會說這是重複的。 – Linus

回答

2

考慮:

string yourstring("AAAbbbAAA"); 
string removestring("AAA"); 

你可以簡單地運行像你的字符串此多次:

yourstring.erase(yourstring.find(removestring), removestring.length()); 

當然,你將不得不檢查string::find使用string::erase其實之前找到一個occurence。

+0

我聽說過替換,但想知道是否有具體用於刪除。這將做到這一點。 –

+0

@ Q3SanD是的,在你的情況下string :: erase更好。只是修改了答案 –

0

這是代碼。這不是非常有效,但效果很好,而且是一個很小的代碼。

string h = "AAAbbbAAAB"; 

int pos = h.find("AAA"); 
while(pos!=-1) 
{ 
    h.replace(pos, 3, ""); 
    pos = h.find("AAA"); 
} 

cout << h << endl; 

它只適用於如果你知道模式。如果它不是你想要的,也許你正在尋找一種模式匹配算法,比如KMP。

相關問題