好吧,我有这段代码:
StreamReader sr = new StreamReader(@"main.cl", true);
String str = sr.ReadToEnd();
Regex r = new Regex(@"&");
string[] line = r.Split(str);
foreach (string val in line)
{
string Change = val.Replace("puts","System.Console.WriteLine()");
Console.Write(Change);
}
如您所见,我正在尝试用 Console.WriteLine(content)
替换 puts (content) 但它需要正则表达式,而且我没有找到一篇关于如何实现的好文章做这个。
基本上,将 * 作为即将到来的值,我想这样做:
string Change = val.Replace("puts *","System.Console.WriteLine(*)");
然后,如果我收到:
puts "Hello World";
我想得到:
System.Console.WriteLine("Hello World");
最佳答案
您需要使用 Regex.Replace
使用 capturing group 捕获部分输入并将捕获的匹配项包含到输出中。示例:
Regex.Replace(
"puts 'foo'", // input
"puts (.*)", // .* means "any number of characters"
"System.Console.WriteLine($1)") // $1 stands for whatever (.*) matched
如果输入总是以分号结尾,您可能希望将该分号移到 WriteLine
括号之外。一种方法是:
Regex.Replace(
"puts 'foo';", // input
"puts (.*);", // ; outside parens -- now it's not captured
"System.Console.WriteLine($1);") // manually adding the fixed ; at the end
如果您打算改编这些示例,最好先查阅技术引用资料;你可以找到一个非常好的here .
关于c# - 正则表达式替换内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23737723/