0

我在 C# 和正则表达式方面没有什么经验,但我需要试试这个逻辑:

 string replacedText = Regex.Replace(
     "ssdf bonnets sdf sdf sdf ", 
     @"(?i)^(.+ )?(bonnet)(s?)( .+)?$", 
     "$1hood$3$4"
 );

上面的代码是对stackoverflow中问题的回答:

在保持其余部分完好无损的同时更换部分字符串? 而不是只检测单词(bonnet),我想替换多个值,例如,如果它找到“f”或“b”或“s”,它将被替换为“a”?

例如,如果输入“ahfbsdrts stb”,则输出将是“ahaaadrta ata”

4

3 回答 3

0

为什么不直接对 String.Replace 进行多次调用?

于 2012-05-01T14:08:15.877 回答
0

我发布了另一个短代码选项。

请参阅http://forums.asp.net/t/1185961.aspx/1

就像是string temp = Regex.Replace(input, @"[fbs]", "a");

于 2012-05-01T14:51:33.200 回答
0

Try this:

using System;
using System.Text.RegularExpressions;

public class Example
{
 public static void Main()
 {
  string input = "ssdf bonnets sdf sdf sdf ";
  string pattern_1 = "f";
  string replacement = "a";
  Regex rgx_1 = new Regex(pattern_1);
  string result = rgx_1.Replace(input, replacement);
  string pattern_2 = "b";
  Regex rgx_2 = new Regex(pattern_2);
  result = rgx_2.Replace(result, replacement);
  string pattern_3 = "s";
  Regex rgx_3 = new Regex(pattern_3);
  result = rgx_3.Replace(result, replacement);
  Console.WriteLine("Original String: {0}", input);
  Console.WriteLine("Replacement String: {0}", result);                             
 }
}
于 2012-05-01T14:10:25.810 回答