leo*_*ora 39 c# string .net-3.5
我想要:
我可以用下面这个来做,但是如果除了结尾之外还有一个"Id"子串,它们会爆炸.是否有一个RemoveFromEnd()方法,它接受多个字符参数?
if (column.EndsWith("Id"))
{
//remove last 2 characters
column = column.replace("Id", "");
}
Run Code Online (Sandbox Code Playgroud)
我看到了这个解决方案:这样做:
column = System.Text.RegularExpressions.Regex.Replace(column, "Id$", "");
Run Code Online (Sandbox Code Playgroud)
但它说它很慢,我将在一个代码块中运行这个代码,我希望它非常快,所以我想看看是否有更快的解决方案.
Jon*_*Jon 70
String.Substring 可以这样做:
column = column.Substring(0, column.Length - 2);
Run Code Online (Sandbox Code Playgroud)
你可以用它自己动手RemoveFromEnd:
public static string RemoveFromEnd(this string s, string suffix)
{
if (s.EndsWith(suffix))
{
return s.Substring(0, s.Length - suffix.Length);
}
else
{
return s;
}
}
Run Code Online (Sandbox Code Playgroud)
jde*_*aan 12
该SubString方法的替代方法是使用Regex.Replacefrom System.Text.RegularExpressions:
using System.Text.RegularExpressions;
...
column = Regex.Replace(column, @"Id$", String.Empty);
Run Code Online (Sandbox Code Playgroud)
这种方式使您可以避免测试,但不确定它是否真的是速度效益:-).至少在某些情况下可能有用的替代方案,在这种情况下,您需要一次检查多个事物.
正则表达式可以编译和重用,以获得一些性能提升,并使用而不是调用静态方法,可以像这样使用:
// stored as a private member
private static Regex _checkId = new Regex(@"Id$", RegexOptions.Compiled);
...
// inside some method
column = _checkId.Replace(column, String.Empty);
Run Code Online (Sandbox Code Playgroud)
好吧,RemoveFromEnd()如果您自己编写,可以有一种方法:
public static string RemoveFromEnd(this string str, string toRemove)
{
if (str.EndsWith(toRemove))
return str.Substring(0, str.Length - toRemove.Length);
else
return str;
}
Run Code Online (Sandbox Code Playgroud)
您可以按如下方式使用它:
column = column.RemoveFromEnd("Id");
Run Code Online (Sandbox Code Playgroud)