我想在一个字符串中替换大约8个字符.
使用Regex方法或仅使用多次调用string.Replace()会更有效吗?
我正在替换可能出现的大约7个字符,而不是全部是下划线.字符可以出现在字符串中的任何位置,而不是按特定顺序等.
除非您确实需要匹配正则表达式,否则不要使用Regex类.让String类型进行直接文本或字符匹配更有效率,如果这是你所做的全部而不是创建一个正则表达式.
Regex类比简单字符或字符串匹配更强大.这种力量不是免费的.使用完整的正则表达式来匹配字符/字符串是过度的.这相当于使用高功率炸药从你的草坪上取下一只蚂蚁,当你的鞋子做得很好.
您不需要多次调用string.Replace() - 它会在一次传递中替换所有出现的事件.请参阅MSDN文档.如果要替换字符串中的不同输入序列,您只需要进行多次调用(这可能是您在问题中暗示的内容).
在这种情况下,我会使用string.Split并string.Join为此:
var replaced = string.Join( "_", input.Split( new[]{'x','y','z'} ) );
Run Code Online (Sandbox Code Playgroud)
这将在字符'x','y'或'z'之一出现的每个位置拆分字符串(替换为您的集合),并使用'_'字符重新加入片段 - 有效地替换原件.这种方法是不是一定比多次调用更有效string.Replace-这将取决于输入字符串的长度,字符的出现次数的更换次数,等等.您需要使用真实数据进行分析,以确定哪些更快.然而,这种方法的作用是使代码更简洁.
就性能而言 - 我会首先使用最简单,最易读的解决方案,如果测试表明存在问题 - 那么我将介绍并决定采用哪种替代解决方案(如果有的话).除非有充分理由不这样做,否则在编写代码时我的个人优先事项是: