如何替换任何这些“/ \\ []:|<> + =;,?*”asp.net中带有空字符串的字符串中的字符

时间:2014-08-06 07:36:27

标签: c# asp.net sharepoint

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

我正在尝试用

替换它
mystring.contains('[')
 {
 mystring.Replace('[',' ');
 }

目前我正如上所述。 有没有更清洁的方法来做到这一点。 谢谢和问候

4 个答案:

答案 0 :(得分:3)

你可以使用一个简单的循环,你根本不需要先检查它是否包含它:

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

这将使用与您的代码类似的空格替换所有出现的内容。如果您想要用空字符串替换它(如上所述),您可以使用:

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

您可以通过替换System.Text.StringBuilder

来改进它
StringBuilder sb = new StringBuilder(mystring);
foreach (char c in @"/\[]:|<>+=;,?*")
    sb.Replace(c.ToString(), "");
mystring = sb.ToString();

StringBuilder在CPU周期方面不一定具有更高的性能,但就内存消耗而言,因为它不会创建新的实例。

答案 1 :(得分:3)

有很多方法:

1)通过正则表达式:

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

2)通过linq:

var pattern = @"/\[]:|<>+=;,?*";
var result = new string(sample.Where(ch => !pattern.Contains(ch)).ToArray());

3)通过StringBuilder:

var sb = new StringBuilder();

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

result = sb.ToString();

这些方式只是样本;)

答案 2 :(得分:0)

你可以使用@ThreeFx提到的正则表达式。另一个技巧是拆分字符串并在之后重新加入:

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

答案 3 :(得分:0)

如果你发现自己需要经常从这样的字符串中删除字符,你可以编写一个简单的扩展方法:

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);