在C#中替换多个字符串元素
有没有更好的办法做到这一点…
MyString.Trim().Replace("&", "and").Replace(",", "").Replace(" ", " ") .Replace(" ", "-").Replace("'", "").Replace("/", "").ToLower();
我已经扩展了字符串类,以将其简化为一项工作,但是有一种更快的方法吗?
public static class StringExtension{
public static string clean(this string s)
{
return s.Replace("&", "and").Replace(",", "").Replace(" ", " ")
.Replace(" ", "-").Replace("'", "").Replace(".", "")
.Replace("eacute;", "é").ToLower();
}
}
只是为了好玩(并停止评论中的论点),我已提拔要点,对以下各种示例进行基准测试。
https://gist.github.com/ChrisMcKee/5937656
regex选项的得分非常高;字典选项出现最快;stringbuilder replace的长发版本比短手稍快。
回答:
更快-不 更有效-是的,如果您要使用StringBuilder
该类。在您的实现中,每个操作都会生成一个字符串副本,在某些情况下可能会影响性能。字符串是
不可变的 对象,因此每个操作仅返回修改后的副本。
如果您希望在Strings
相当长的倍数上主动调用此方法,则最好将其实现“迁移”到StringBuilder
类上。有了它,就可以直接在该实例上执行任何修改,因此可以省去不必要的复制操作。
public static class StringExtention{
public static string clean(this string s)
{
StringBuilder sb = new StringBuilder (s);
sb.Replace("&", "and");
sb.Replace(",", "");
sb.Replace(" ", " ");
sb.Replace(" ", "-");
sb.Replace("'", "");
sb.Replace(".", "");
sb.Replace("eacute;", "é");
return sb.ToString().ToLower();
}
}
以上是 在C#中替换多个字符串元素 的全部内容, 来源链接: utcz.com/qa/435384.html