【发布时间】:2011-07-14 03:57:02
【问题描述】:
我想:
- 检查变量并确定最后 2 个字符是否为“Id”
- 如果是,请将其删除。
我可以在下面这样做,但是如果除了结尾之外还有一个“Id”子字符串,它们就会爆炸。是否有带有多个字符参数的 RemoveFromEnd() 方法?
if (column.EndsWith("Id"))
{
//remove last 2 characters
column = column.replace("Id", "");
}
我看到this solution: 是这样做的:
column = System.Text.RegularExpressions.Regex.Replace(column, "Id$", "");
但它说它很慢,我将在一个代码块中运行这段代码,我希望它非常快,所以我想看看是否有更快的解决方案可用。
【问题讨论】:
-
只是好奇正则表达式有多“慢”(不带回溯的结束锚应该是 zippy-fast)......尽管在这里子字符串可能更合适。 OTOH,正则表达式没有明确的条件/EndsWith。
-
Regex 在一般情况下应该更快。您是否尝试过预编译或将其存储为成员以在您的方法中使用它? (避免每次创建正则表达式的成本)
-
你放的 sn-p 会从字符串中删除所有“Id”,如果它有后缀的话,如果输入字符串是“MyIdWrongId”,它将返回“MyWrong”...