C# Replace()不会更改变量的源字符串

C# Replace()不会更改变量的源字符串,c#,C#,我的c#应用程序中有以下代码:- string[] excludechar = { "|", "\\", "\"", "'", "/", "[", " ]", ":", "<", " >", "+", "=", ",", ";", "?", "*", " @" }; var currentgroupname = curItemSiteName; for (int i = 0; i < excludechar.Length; i++) { i

我的c#应用程序中有以下代码:-

 string[] excludechar = { "|", "\\", "\"", "'", "/", "[", " ]", ":", "<", " >", "+", "=", ",", ";", "?", "*", " @" };
 var currentgroupname = curItemSiteName;
 for (int i = 0; i < excludechar.Length; i++)
       {
         if (currentgroupname.Contains(excludechar[i]))
             currentgroupname.Replace(excludechar[i], "");       
       }
 site.RootWeb.SiteGroups.Add(currentgroupname)
string[]excludechar={“|”、“\\”、“\”、“\”、“/”、“[”、“]”、“:”、“+”、“=”、“、”、“;”、“?”、“*”、“@”};
var currentgroupname=curItemSiteName;
for(int i=0;i

现在在我的abive代码中,
currentgroupname
变量,我在
.ADD
函数中传递的变量将具有我在for循环中替换的所有特殊字符。因此,如果我可以修改我的代码,那么任何人都可以同意。Replace将实际替换
currentgroupname
的原始字符串

实际上,您没有将“替换”字符串分配给
currentgroupname

 string[] excludechar = { "|", "\\", "\"", "'", "/", "[", " ]", ":", "<", " >", "+", "=", ",", ";", "?", "*", " @" };
 var currentgroupname = curItemSiteName;
 for (int i = 0; i < excludechar.Length; i++)
       {
         if (currentgroupname.Contains(excludechar[i]))
             currentgroupname = currentgroupname.Replace(excludechar[i], "");       
       }
 site.RootWeb.SiteGroups.Add(currentgroupname)
string[]excludechar={“|”、“\\”、“\”、“\”、“/”、“[”、“]”、“:”、“+”、“=”、“、”、“;”、“?”、“*”、“@”};
var currentgroupname=curItemSiteName;
for(int i=0;i
使用一些
正则表达式不是更容易吗?

var input = "<>+--!I/have:many@invalid\\|\\characters";
var result = Regex.Replace(input, @"\W", "");
Console.Write(result); //Ihavemanyinvalidcharacters

可能currentgroupname=currentgroupname.Replace(排除字符[i],“”)<代码>currentgroupname=currentgroupname.Replace(…)一如既往,检查.string是否不可变。您只需创建一个新字符串,并用新字符串替换旧字符串(以下^)
using System.Text.RegularExpressions;