在asp.net中使用Regex时没有任何反应

时间:2011-03-08 12:27:20

标签: c# asp.net

如果我运行此代码,正则表达式什么都不做: 输入包含:“geeeeekdldn”

Regex.Replace(input, @"g(.|\n)*?n", string.Empty); 

通常在正则表达式之后输入的值是“”但我仍然得到“geeeeekdldn” 请有人帮帮我

3 个答案:

答案 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中的字符串类型是不可变的,这意味着字符串值只能被替换,而不能被更改。因此,对字符串始终的所有函数都返回一个新函数,而不是更改参数。