我想在asp.net c#中用空字符串替换字符串中任何下面出现的字符 " / \ []:| < > + =; ,? *"
我正在尝试用
替换它mystring.contains('[')
{
mystring.Replace('[',' ');
}
目前我正如上所述。 有没有更清洁的方法来做到这一点。 谢谢和问候
答案 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);