大家都有一个程序正常工作但返回")Hi("
之类的字符串
它应该是"(Hi)"
所以我需要将'('
替换为')'
并替换
')'
'('
s.Replace('(',')').Replace(')','(')
这听起来很容易
")Hi("
诀窍是在第一次替换字符串之后更改
第二次更换后"(Hi("
到")Hi)"
将更改两个字符
决赛将成为SubSystem
请帮助
答案 0 :(得分:1)
您还可以使用regex替换。
s = System.Text.RegularExpressions.Regex.Replace(s, @"[)](\w+)[(]", "($1)");
答案 1 :(得分:0)
你不能使用Replace,因为它在整个字符串上运行它的替换操作,而不是char的char。
一个简单的蛮力解决方案可能是这个
void Main()
{
// A dictionary where every key points to its replacement char
Dictionary<char, char> replacements = new Dictionary<char, char>()
{
{'(', ')'},
{')', '('},
};
string source = ")Hi(";
StringBuilder sb = new StringBuilder();
foreach (char c in source)
{
char replacement = c;
if(replacements.ContainsKey(c))
replacement = replacements[c];
sb.Append(replacement,1);
}
Console.WriteLine(sb.ToString());
}
您可以在扩展方法中将其转换为静态类
public static class StringExtensions
{
public static string ProgressiveReplace(this string source, Dictionary<char, char> replacements)
{
StringBuilder sb = new StringBuilder();
foreach (char c in source)
{
char replacement = c;
if (replacements.ContainsKey(c))
replacement = replacements[c];
sb.Append(replacement, 1);
}
return sb.ToString();
}
}
并使用
从您的代码中调用它Dictionary<char, char> replacements = new Dictionary<char, char>()
{{'(', ')'},{')', '('}};
s = s.ProgressiveReplace(replacements);
答案 2 :(得分:0)
方法1 ) 使用以下内容:
var requiredString = string.Join(string.Empty, str.Select(x=>{if (x == '(') x = ')'; else if (x == ')') x = '('; return x;}));
方法2 ) 或者您可以使用以下扩展方法:
public static class StringExtensions
{
public static string ReplaceMultiple(this string source, Dictionary<char, char> replacements)
{
return string.Join(string.Empty , source.Select(x=>Replace(x,replacements)));
}
private static char Replace(char arg, Dictionary<char, char> replacements)
{
if(replacements.ContainsKey(arg))
arg = replacements[arg];
return arg;
}
}
此方法可按如下方式使用:
var rep = new Dictionary<char, char>
{
{ ')', '(' },
{ '(', ')' },
// { '#', '*' },
// { '*', '#' }
};
var c = str.ReplaceMultiple(rep);
答案 3 :(得分:0)
boolean sudoku(int[][] grid) {
for (int i = 0; i <9; i++) {
int row = 0, col = 0, group = 0;
for (int j = 0; j <9; j++) {
// check for row i
row += grid[i][j];
// check for col i
col += grid[j][i];
// check for sub-grid i
group += grid[i / 3 * 3 + j / 3][i % 3 * 3 + j % 3];
}
if (row != 45 || col != 45 || group != 45) return false;
}
return true;
}
答案 4 :(得分:0)
Regex.Replace
可让您处理每个Match
(需要using System.Text.RegularExpressions;
):
string result = Regex.Replace(")Hi(", @"\(|\)", m => m.Value == "(" ? ")" : "(");
替代方案可以用其他东西替换其中一个字符:
string result = ")Hi(".Replace('(', '\0').Replace(')', '(').Replace('\0', ')');