我的疑问是是否有可能在一个字符串中替换多个字符(例如,&、|和$字符)而不必多次使用.Replace()函数?目前我是这样使用它的:
return inputData.Replace('$', ' ').Replace('|', ' ').Replace('&', ' ');
不过这太糟糕了,我想知道是否有类似的小型但同样有效的替代品。
编辑:谢谢大家的回答,不幸的是我没有达到15个声望以投票。
我的疑问是是否有可能在一个字符串中替换多个字符(例如,&、|和$字符)而不必多次使用.Replace()函数?目前我是这样使用它的:
return inputData.Replace('$', ' ').Replace('|', ' ').Replace('&', ' ');
不过这太糟糕了,我想知道是否有类似的小型但同样有效的替代品。
编辑:谢谢大家的回答,不幸的是我没有达到15个声望以投票。
Regex.Replace
:string output = Regex.Replace(input, "[$|&]", " ");
Split
函数和String.Join
来实现以下操作:String.Join(" ", abc.Split('&', '|', '$'))
测试代码:
static void Main(string[] args)
{
String abc = "asdfj$asdfj$sdfjn&sfnjdf|jnsdf|";
Console.WriteLine(String.Join(" ", abc.Split('&', '|', '$')));
}
...Join(" ", ...
吧? - Marc Gravell可以使用Regex
来实现,但如果你因某些原因想要避免它,可以使用以下静态扩展:
public static string ReplaceMultiple(this string target, string samples, char replaceWith) {
if (string.IsNullOrEmpty(target) || string.IsNullOrEmpty(samples))
return target;
var tar = target.ToCharArray();
for (var i = 0; i < tar.Length; i++) {
for (var j = 0; j < samples.Length; j++) {
if (tar[i] == samples[j]) {
tar[i] = replaceWith;
break;
}
}
}
return new string(tar);
}
使用方法:
var target = "abc123abc123";
var replaced = target.ReplaceMultiple("ab2", 'x');
//replaced will result: "xxc1x3xxc1x3"
关于什么:
return Regex.Replace(inputData, "[\$\|\&]", " ");
@
前缀。 - fero