替代String.Replace
时间:2020-03-06 14:34:21 来源:igfitidea点击:
所以我今天写的一些代码基本上是这样的:
string returnString = s.Replace("!", " ")
.Replace("@", " ")
.Replace("#", " ")
.Replace("$", " ")
.Replace("%", " ")
.Replace("^", " ")
.Replace("*", " ")
.Replace("_", " ")
.Replace("+", " ")
.Replace("=", " ")
.Replace("\", " ")
真的不是很好。我想知道是否有一个正则表达式或者我可以写的东西来代替所有对Replace()函数的调用?
解决方案
我们可以使用Regex.Replace()。所有字符都可以放在方括号之间,该方括号与方括号之间的任何字符匹配。一些特殊字符必须用反斜杠转义,我在这里使用@verbatim字符串,因此我不必为Ccompiler对其进行两次转义。第一个参数是输入字符串,最后一个参数是替换字符串。
var returnString = Regex.Replace(s,@"[!@#$%\^*_\+=\]"," ");
s/[!@#$%^*_+=\]/ /
将是正则表达式...在cyou中应该可以使用
Regex.Replace(yourstring, "[!@#$%^*_+=\]", "" );
虽然我的Cis生锈了..
仅供参考,如果我们需要修改此正则表达式,则需要了解正则表达式语言。这非常简单,作为开发人员,我们真的应该将正则表达式添加到工具箱中,我们每天都不需要它们,但是能够在需要时适当地应用它们,这将使我们付出十倍的回报。为最初的努力。以下是指向网站的链接,该网站具有一流的,易于遵循的教程和正则表达式参考资料:regular-expressions.info。一旦对正则表达式有所了解并想在软件中使用它们,我们将需要购买Regex Buddy。它是用于学习和使用正则表达式的廉价且非同寻常的工具。我很少购买开发工具,但是这个工具值得每一分钱。它在这里:Regex Buddy
如果我们不关心正则表达式,这里还有其他几种扩展方法。
我们可以输入要替换的特定字符:
static public string ReplaceCharsWithSpace(this string original, string chars)
{
var result = new StringBuilder();
foreach (var ch in original)
{
result.Append(chars.Contains(ch) ? ' ' : ch);
}
return result.ToString();
}
或者,如果我们知道只保留或者仅去除特定类型的字符,则可以使用char中的各种方法,例如IsLetter,IsDigit,IsPunctuation和IsSymbol:
static public string ReplaceNonLetterCharsWithSpace(this string original)
{
var result = new StringBuilder();
foreach (var ch in original)
{
result.Append(char.IsLetter(ch) ? ch : ' ');
}
return result.ToString();
}
这是我们使用每种可能性的方式:
string s = "ab!2c"; s = s.ReplaceCharsWithSpace(@"!@#$%^*_+=/"); // s contains "ab c" string t = "ab3*c"; t = t.ReplaceNonLetterCharsWithSpace(); // t contains "ab c"
如果需要,也许可以通过使用Lambda表达式和List <>,ForEach将其减少到几行。
using System.Collections.Generic;
namespace ReplaceWithSpace
{
class Program
{
static void Main(string[] args)
{
string someString = "#1, 1+1=2 $string$!";
var charsToRemove = new List<char>(@"!@#$%^*_+=\");
charsToRemove.ForEach(c => someString = someString.Replace(c, ' '));
System.Diagnostics.Debug.Print(someString); //" 1, 1 1 2 string "
}
}
}

