在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

回到顶部