如果我运行此代码,正则表达式什么都不做: 输入包含:“geeeeekdldn”
Regex.Replace(input, @"g(.|\n)*?n", string.Empty);
通常在正则表达式之后输入的值是“”但我仍然得到“geeeeekdldn” 请有人帮帮我
答案 0 :(得分:5)
您需要将Replace
的输出分配给新字符串:
string output = Regex.Replace(input, @"g(.|\n)*?n", string.Empty);
Replace
不更新输入字符串 - 请参阅MSDN documentation - 因为(正如Hans指出的那样).NET字符串是不可变的,因此不能更改。因此,任何操作字符串的方法都必须返回一个新字符串,而不是更新提供的字符串。
答案 1 :(得分:2)
Regex.Replace
是一个函数,其替换字符串为返回值。目前您正在丢弃此返回值。你可能想要
string processedInput = Regex.Replace(input, @"g(.|\n)*?n", string.Empty);
答案 2 :(得分:1)
除了所有(正确的)答案之外:.Net中的字符串类型是不可变的,这意味着字符串值只能被替换,而不能被更改。因此,对字符串始终的所有函数都返回一个新函数,而不是更改参数。