Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何替换其中任何一个“/\”[]:|<&燃气轮机+;=*&引用;asp.net中包含空字符串的字符串中的字符_C#_Asp.net_Sharepoint - Fatal编程技术网

C# 如何替换其中任何一个“/\”[]:|<&燃气轮机+;=*&引用;asp.net中包含空字符串的字符串中的字符

C# 如何替换其中任何一个“/\”[]:|<&燃气轮机+;=*&引用;asp.net中包含空字符串的字符串中的字符,c#,asp.net,sharepoint,C#,Asp.net,Sharepoint,我想用asp.net c中的空字符串替换以下字符串中出现的任何字符# “/\[]:|+=;,?*” 我正试图用一个新的名字来代替它 mystring.contains('[') { mystring.Replace('[',' '); } 目前我正在做如上所述。 有没有更干净的方法。 感谢并问候您可以使用一个简单的循环,无需首先检查它是否包含: foreach(char c in @"/\[]:|<>+=;,?*") mystring = mystring.Repla

我想用asp.net c中的空字符串替换以下字符串中出现的任何字符# “/\[]:|<>+=;,?*”

我正试图用一个新的名字来代替它

mystring.contains('[')
 {
 mystring.Replace('[',' ');
 }
目前我正在做如上所述。 有没有更干净的方法。
感谢并问候

您可以使用一个简单的循环,无需首先检查它是否包含:

foreach(char c in @"/\[]:|<>+=;,?*")
    mystring = mystring.Replace(c, ' ');

StringBuilder
不一定在CPU周期方面性能更好,但在内存消耗方面性能更好,因为它并不总是创建新实例。

您可以使用@ThreeFx提到的正则表达式。另一个技巧是拆分字符串,然后重新连接:

var toBeRemoved = new char[] { '[', ']', '/', '\\', ':', '|', '<', '>', '+', '=', ';', ',', '?', '*' };
mystring = string.Join(string.Empty, mystring.Split(toBeRemoved));
var-toBeRemoved=new char[]{'[',']','/','\\',':','|',''+','=',';',','?','*';
mystring=string.Join(string.Empty,mystring.Split(toBeRemoved));
有很多方法:

1) 通过正则表达式:

var pattern = @"[\/\\[\]\:\|\<>\+\=\;\,\?\*]";
var sample = "test * beacuse [a]";
var result = Regex.Replace(sample, 
                           pattern, 
                           string.Empty, 
                           RegexOptions.CultureInvariant);

这些方法只是示例;)

如果您经常需要从字符串中删除字符,可以编写一个简单的扩展方法,如下所示:

public static class StringExt
{
    public static string Remove(this string self, params char[] charsToRemove)
    {
        var result = new StringBuilder();

        foreach (char c in self)
            if (Array.IndexOf(charsToRemove, c) == -1)
                result.Append(c);

        return result.ToString();
    }
这应该是相当有效的

通过使用
params
参数,我们有几种方法可以调用它,如下示例代码所示:

string test = @"a/b\c[d]e:f|g<h>i+j=k;l,m?n*o";

// Pass an array of chars to remove:
string result1 = test.Remove(@"/\[]:|<>+=;,?*".ToCharArray());
Console.WriteLine(result1);

// Pass individually listed chars to remove:
string result2 = test.Remove('/', '\\', '[', ']', ':', '|', '<', '>', '+', '=', ';', ',', '?', '*');
Console.WriteLine(result2);
字符串测试=@“a/b\c[d]e:f|gi+j=k;l,m?n*o”; //传递要删除的字符数组: 字符串result1=test.Remove(@/\[]:|+=;,?*”.ToCharArray()); 控制台写入线(结果1); //传递单独列出的字符以删除: string result2=test.Remove(“/”、“\\”、“[”、“]”、“:”、“|”、“+”、“=”、“;”、“,”、“?”、“*”); 控制台写入线(结果2);
使用a。您的完整代码是什么?更干净的解决方案是创建一个
char[]
,其中包含您希望替换的所有不同字符。注意:
Contains
不是必需的,因为如果它不存在,Replace将不会替换任何内容。我厌倦了下面的代码,但它总是说下面没有匹配项。下面是我将获得的字符串示例groupName=abcnd&dfsdfsf string groupName=abcnd,dfsdsf if(Regex.IsMatch(groupName,@)[/\[]:|<>+=;,?*]){groupName=Regex.Replace(groupName,@“[/\[]:|<>+=;,?*]”,string.Empty);}您是想用上面提到的空字符串替换所有发生的事件,还是想用代码中显示的空格替换它?这是一个很大的区别。@user3476088您想删除的字符中有很多特殊字符。查看文档:在这种情况下使用Regex并不是那么简单sed正则表达式如下所示,但它总是说找不到匹配项。下面的代码字符串groupName=abcnd&dfsdsf string groupName=abcnd,dfsdsf if(Regex.IsMatch(groupName,@“[/\[]:\>+=;,?*]”){groupName=Regex.Replace(groupName,@“[/\[\[]:<>+=,?*]”,string.Empty)}@user3476088您的正则表达式无效。您没有转义特殊字符。我认为您不必要地转义了大多数其他字符。只需转义
\
]
(除非您将其放在开头)。(另一方面,你应该如何在代码中标记一个反斜杠?@Rawling-Hmm,我已经用regex-tester检查过了,没有转义regex是无效的。可能检查的是错误的。我可以相信一个通用测试程序会让您转义
/
,因为它通常是正则分隔符,但在C#中这不是必需的。大多数其他的(
[:|+=;,?*
)在字符类中没有特殊意义。它不是
mystring=mystring.Replace(c,”)
foreach
中创建了许多不必要的
字符串
实例?@pwas:不要低估垃圾收集器。另外,只有14个替换,但并不多。然而,我编辑了我的答案,以显示
StringBuilder
方法。只有14个。但是……如果源字符串很大呢?我知道GB会抓住联合国大学编辑字符串,但我们不知道什么时候。此外,当有方法在中高效创建时,增加GB的工作量有什么用?@pwas:如前所述,我对其进行了编辑,以显示一种节省(临时)内存的方法。“但我们不知道何时”不再引用对象(这里就是这种情况)内存是需要的。是的,我知道,但这并不意味着我们可以在不需要内存的时候浪费内存-更重要的是,当它不能加快操作时-创建许多大字符串实例也会消耗时间。无论如何,字符串生成器+1。
var pattern = @"/\[]:|<>+=;,?*";
var result = new string(sample.Where(ch => !pattern.Contains(ch)).ToArray());
var sb = new StringBuilder();

foreach (char t in sample)
{
    if (!pattern2.Contains(t))
    {
        sb.Append(t);
    }
}

result = sb.ToString();
public static class StringExt
{
    public static string Remove(this string self, params char[] charsToRemove)
    {
        var result = new StringBuilder();

        foreach (char c in self)
            if (Array.IndexOf(charsToRemove, c) == -1)
                result.Append(c);

        return result.ToString();
    }
string test = @"a/b\c[d]e:f|g<h>i+j=k;l,m?n*o";

// Pass an array of chars to remove:
string result1 = test.Remove(@"/\[]:|<>+=;,?*".ToCharArray());
Console.WriteLine(result1);

// Pass individually listed chars to remove:
string result2 = test.Remove('/', '\\', '[', ']', ':', '|', '<', '>', '+', '=', ';', ',', '?', '*');
Console.WriteLine(result2);