我有一個字符串,其中包含帶括號的單詞。我需要從字符串中刪除整個單詞。如何從字符串中刪除單詞?
例如:對於輸入,"car wheels_(four) klaxon"
的結果應該是"car klaxon"
。
有人可以給我一個例子,可以做到這一點嗎?
我有一個字符串,其中包含帶括號的單詞。我需要從字符串中刪除整個單詞。如何從字符串中刪除單詞?
例如:對於輸入,"car wheels_(four) klaxon"
的結果應該是"car klaxon"
。
有人可以給我一個例子,可以做到這一點嗎?
你可以用正則表達式來做到這一點。您需要的正則表達式是:
"\s?\S+[()]\S+\s?"
這消除含有或任何字任一個(或)兩者,並且將同時刪除單詞和摺疊周邊空白。比賽應該用一個空格替換。
在C#中的正則表達式可以這樣來使用:
string s = "car wheels_(four) klaxon";
s = Regex.Replace(s, @"\s?\S*[()]\S*\s?", " ");
我不能完全肯定VB翻譯本的,但希望你自己看着辦吧。
稍有不同:
sed "s/\s\+\S*(.\+)\S*\s\+/ /g" yourfile
它的工作原理是這樣的:
yourfile:
car wheels_(four) klaxon
ciao (wheel) hey
foo bar (baz) qux
stack overflow_(rulez)_the world
轉化中:
car klaxon
ciao hey
foo bar qux
stack world
哇。正則表達式再次統治着這個世界。 http://xkcd.com/208/ – Tonio 2009-11-27 19:22:23
不太合適。在'foo bar(baz)qux'上,你會得到「foo qux」而不是「foo bar qux」。您需要匹配非空白字符以避免匹配多個單詞。 – 2009-11-27 19:32:33
這是另一個測試用例:'foo ba(r baz qu)x quux'。海報沒有具體說明他在這種情況下需要什麼,所以我不知道應該得到什麼樣的正確結果,但是我們在這種情況下的輸出有所不同。 – 2009-11-27 19:51:15
如果速度不是問題,你想避免overcomp可以使用String.Split創建一個「單詞」數組,迭代每個單詞,替換任何String.Contains「(」用空字符串,然後使用String.Join作爲分隔符「」來獲得你的結果。
抱歉不能發送codez,手邊沒有VB.NET編譯器。
你的正則表達式只是讓我的心靈崩潰 – JohnIdol 2009-11-27 19:04:03
一個潛在的問題:即使括號不平衡,這也會匹配任何帶括號的單詞。這可能會或可能不會被期望。 – Welbog 2009-11-27 19:06:19
謝謝馬克,它工作正常,但如果它有一個像「(wheel)」這樣的詞不能代替這個詞:P – 2009-11-27 19:06:28