C# 用新编号替换第一个圆括号和编号

C# 用新编号替换第一个圆括号和编号,c#,regex,replace,C#,Regex,Replace,我正在使用Visual Studio/C并具有以下字符串: string test = "We have files (15 files)"; 现在我想替换第一个圆括号后面的第一个数字整数 例如,如果我们将15替换为6,字符串现在将具有以下值: "We have files (6 files)" 到目前为止,这是我所拥有的,但它不起作用: int newCount = 6; test = Regex.Replace(test, "([0-9]", "(" + newCount ); 提前谢

我正在使用Visual Studio/C并具有以下字符串:

string test = "We have files (15 files)";
现在我想替换第一个圆括号后面的第一个数字整数

例如,如果我们将15替换为6,字符串现在将具有以下值:

"We have files (6 files)"
到目前为止,这是我所拥有的,但它不起作用:

int newCount = 6;
test = Regex.Replace(test, "([0-9]", "(" + newCount );
提前谢谢

注1: 如果第一个区域有数字,我需要检查是否有左括号。例如:

"There are 20 missing (400 processed)"
如果通过450,结果将是:

"There are 20 missing (450 processed)"

那是因为两件事

第一:是正则表达式使用的字符,要按字面意思匹配它,需要使用\:\

第二:您只匹配一个数字,所以当您尝试匹配15时,它只匹配并替换1

这应该能奏效!看看解释

编辑

更好的方法是只匹配数字:

test = Regex.Replace(test, @"\d+", newCount.ToString());
试试这个:

string test = "We have files (15 files)";
string pattern = "\d+";
string replacement = "6";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(test, replacement);
您不需要更换支架。上面的正则表达式只选择数字,可以是任意位数

  int newCount = 6;
  string test = "We have files (15 files)";
  test = Regex.Replace(test, @"\([0-9]+", newCount.ToString());
我试着做最少的改变

您缺少+运算符,它基本上表示一个或多个

在编辑之后,还缺少\个转义特殊字符

你总是可以在网上乱搞正则表达式,检查你的模式

编辑:


test=Regex.Replacetest,[0-9],+newCount;不起作用,因为你会替换每个模式的第一次遭遇,你会得到:我们有666个文件,因为它匹配,1,5,如果原始文本是,我们有156个文件[最后添加6个]你会得到我们有6666个文件,因为它不匹配,1,5,6

您是否考虑过使用字符串插值,例如字符串测试=$Wehavefiles{newCount}files;?或者您必须使用/处理现有的字符串吗?谢谢bassfader。是的,我必须使用现有的字符串。对于该任务来说,正则表达式可能有些过分。使用indexOf的常用方法速度更快,可能就足够了。那么,为什么必须在那里使用呢?@T–nNguyễ不必了,我只是用他的例子回答了他的要求。无聊过度,干得好。我需要检查括号,以防在第一个区域中有其他数字。我在Visual Studio中收到一个关于第一个示例中转义序列的错误。@RobertSmith抱歉,您需要使用@转义模式字符串,因为它现在包含一个`\`。我更新了我的答案!编辑答案不好,你会得到450个缺少450个处理的Hank Nick干得好。如果第一个区域有数字,我需要检查是否有左括号。对不起,我没提那件事。
  int newCount = 6;
  string test = "We have files (15 files)";
  test = Regex.Replace(test, @"\([0-9]+", newCount.ToString());