在接受採訪時我問到了這個問題,我的解決方案有點吸引人,所以我想知道是否有人可以做得更好。解析URL字符串以刪除不需要的東西(C++)
鑑於這種形式的URL字符串:
http://www.foo.com?key1=value1&key2=value2&key3=value3,並給予重點
我想創建一個函數,它接受一個鍵值,並返回原始字符串沒有密鑰和值。
例子:
輸入:
http://www.foo.com?key1=value1&key2=value2&key3=value3
remove: key2 and its value
輸出:
http://www.foo.com?key1=value1&key3=value3
我的解決辦法是這樣的:
void parseURL(string str, string key)
{
int i;
i = str.find_first_of("?");
string s = str.substr(i);
int start = s.find(key);
int end = 0;
if (start !=string::npos)
end = s.find_first_of("&", start);
string news = str.substr(0, i) + s.substr(0, start-1) + s.substr(end);
cout << news;
}
但它的醜陋,這將失敗一對 的測試用例。我知道有人有更聰明的方式來做到這一點。任何人?
使用正則表達式是我的第一種方法,無論是在真實代碼還是在面試中。如果這在某種程度上是不可接受的,我會按照泰勒的建議來處理這個字符串。 – 2010-09-15 22:11:51