gpt4 book ai didi

c# - 如何反转括号?

转载 作者:行者123 更新时间:2023-11-30 18:58:42 27 4
gpt4 key购买 nike

我想将这个 () 转换成这个 ) (

比如 (1+2)) 1+2(

我试过了

char[] cArray = text.ToCharArray();
for (int i = 0; i < text.Length; i++)
{
if (cArray[i] == '(')
{
cArray[i] = ')';

}
if (cArray[i] == ')')
{
cArray[i] = '(';
}
}
string p=new string(cArray);
return p;

但是没用

最佳答案

问题是当你将 ( 改为 ) 后,第二个 if 语句将立即为真,所以字符是又翻了回来。但反过来不是 true - 如果您从 ) 开始,第二个语句将翻转它,但它不会再次翻转回来。最终结果是所有 ) 字符将被翻转为 (,但仅此而已。所以输入 "(((foo)))" 将返回 "(((foo(((.

解决这个问题的最简单方法是使用 else 语句:

char[] cArray = text.ToCharArray();
for (int i = 0; i < text.Length; i++)
{
if (cArray[i] == '(')
{
cArray[i] = ')';
}
else if (cArray[i] == ')')
{
cArray[i] = '(';
}
}
return new string(cArray);

或者,您可以使用 switch 语句,如果您要考虑很多不同的情况,这会更简单:

char[] cArray = text.ToCharArray();
for (int i = 0; i < text.Length; i++)
{
switch (cArray[i])
{
case '(':
cArray[i] = ')';
break;
case ')':
cArray[i] = '(';
break;
// No need for a default as it would be a no-op
}
}
return new string(cArray);

switch 语句只会对表达式求值一次(当然是在每次迭代时),因此您无需担心这两种情况会相互干扰。

关于c# - 如何反转括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22544815/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com