解决方案应该很简单,但仍然在苦苦挣扎.如何反转分组符号,如括号,括号,大括号,...
我的字符串是这样的: Lorem ipsum dolor )sit amet(, consectetur ]adipiscing[ elit
我希望输出为 Lorem ipsum dolor (sit amet), consectetur [adipiscing] elit
关键是如果我在多次传递中逐个符号地转换符号,它会被转换两次:
text = text.Replace('[', ']');
text = text.Replace(']', '[');
text = text.Replace('(', ')');
text = text.Replace(')', '(');
Run Code Online (Sandbox Code Playgroud)
结果是 Lorem ipsum dolor (sit amet(, consectetur [adipiscing[ elit
如何一次转换文本?
像古人一样做...你按字符重建字符串...
string str = "Lorem ipsum dolor )sit amet(, consectetur ]adipiscing[ elit";
var sb = new StringBuilder(str.Length);
foreach (char ch in str)
{
switch (ch)
{
case '[':
sb.Append(']');
break;
case ']':
sb.Append('[');
break;
case '(':
sb.Append(')');
break;
case ')':
sb.Append('(');
break;
default:
sb.Append(ch);
break;
}
}
string str2 = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
或者你可以开始你的混淆C#课程:-)
string str3 = new Regex(@"[\[\]()]")
.Replace(str, x => ((char)(x.Value[0] + (x.Value == "[" || x.Value == "(" ?
1 + (x.Value[0] / '[') :
-1 - (x.Value[0] / '[')))).ToString());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |