我在字符串中有多個括號。如何更換多支架?
所以,我想替換爲空的所有多個支架。
例如,
string str = "111(222(333(444())))555(666(77(8888)))()";
var eliminateBracket = Regex.Replace(str, @"\([^)]*\)", "");
在這種情況下我有結果是 「111))555))」。
除了全括號以外,它需要產生的結果是「111555」。
請幫我介紹一下。謝謝。
我在字符串中有多個括號。如何更換多支架?
所以,我想替換爲空的所有多個支架。
例如,
string str = "111(222(333(444())))555(666(77(8888)))()";
var eliminateBracket = Regex.Replace(str, @"\([^)]*\)", "");
在這種情況下我有結果是 「111))555))」。
除了全括號以外,它需要產生的結果是「111555」。
請幫我介紹一下。謝謝。
你可以使用string.Replace取代 「(」 和 「)」
string str = "111(222(333(444()))555(666(77(8888)))()".Replace("(","").Replace(")","");
如果您預期的結果111555你可以使用這個reqex
string str = "111(222(333(444())))555(666(77(8888)))()";
var eliminateBracket = Regex.Replace(str, @"\([^)]*\)*\)", "");
此字符串111(222(333(444()))555(666(77(8888)))()
555之前錯過了)
,或者在111
, 之後包含額外的(
,您可以通過以下代碼找到它:
string str = "111(222(333(444()))555(666(77(8888)))()";
var eliminateBracket = ReplaceBrackets(str);
static string ReplaceBrackets(string input) {
string regex = @"\([^()]*\)";
string result = input;
string previous = input;
while (previous.Length !=
(result = Regex.Replace(result, regex, "")).Length
) {
previous = result;
}
return result;
}
所以最後的字符串是111(222555
。
將給定的字符串更正爲111(222(333(444())))555(666(77(8888)))()
,它會顯示您的預期結果111555
。
另一種方法刪除括號中的任何內容,沒有正則表達式。
public static string RemoveAnythingInBrackets(string input)
{
if(string.IsNullOrEmpty(input))
{
return input;
}
StringBuilder result = new StringBuilder();
Stack<char> bracket = new Stack<char>();
foreach(char c in input)
{
if(c == '(')
{
bracket.Push(c);
}
else if(c == ')' && bracket.Peek() == '(')
{
bracket.Pop();
}
else if(!bracket.Any())
{
result.Append(c);
}
}
return result.ToString();
}
不會模式'\(| \)'做竅門嗎? – spender
不,這個模式不起作用。當我使用這種模式時,結果是「111222333444555666778888」。這不是我想要的。 – Song
你認爲'[^]]'在你的正則表達式中意味着什麼? –