C# 在c中删除字符串中前导特殊字符的最快方法#
我用的是c#,我有一个类似C# 在c中删除字符串中前导特殊字符的最快方法#,c#,string,C#,String,我用的是c#,我有一个类似 -Xyz --Xyz ---Xyz -Xyz-Abc --Xyz-Abc 我只想删除任何特殊字符直到字母表出现,注:< /强>字符串中间的特殊字符将保持不变。最快的方法是什么?您可以使用并传入要删除的字符: var result = yourString.TrimStart('-', '_'); 但是,只有当要删除的特殊字符的数量众所周知且很少时,这才是一个好主意。 如果不是这样,可以使用正则表达式: var result = Regex.Replace(your
-Xyz
--Xyz
---Xyz
-Xyz-Abc
--Xyz-Abc
我只想删除任何特殊字符直到字母表出现,<强>注:< /强>字符串中间的特殊字符将保持不变。最快的方法是什么?
您可以使用并传入要删除的字符:var result = yourString.TrimStart('-', '_');
但是,只有当要删除的特殊字符的数量众所周知且很少时,这才是一个好主意。如果不是这样,可以使用正则表达式:
var result = Regex.Replace(yourString, "^[^A-Za-z0-9]*", "");
我喜欢这两种方法:
List<string> strings = new List<string>()
{
"-Xyz",
"--Xyz",
"---Xyz",
"-Xyz-Abc",
"--Xyz-Abc"
};
foreach (var s in strings)
{
string temp;
// String.Trim Method
char[] charsToTrim = { '*', ' ', '\'', '-', '_' }; // Add more
temp = s.TrimStart(charsToTrim);
Console.WriteLine(temp);
// Enumerable.SkipWhile Method
// Char.IsPunctuation Method (se also Char.IsLetter, Char.IsLetterOrDigit, etc.)
temp = new String(s.SkipWhile(x => Char.IsPunctuation(x)).ToArray());
Console.WriteLine(temp);
}
List strings=新列表()
{
“-Xyz”,
“--Xyz”,
“--Xyz”,
“-Xyz Abc”,
“--Xyz Abc”
};
foreach(字符串中的变量s)
{
字符串温度;
//String.Trim方法
char[]charsToTrim={'*','''''''''-','\'};//添加更多
温度=s.TrimStart(charsToTrim);
控制台写入线(临时);
//Enumerable.SkipWhile方法
//Char.ispuncuation方法(se还包括Char.IsLetter、Char.IsLetterOrDigit等)
temp=新字符串(s.SkipWhile(x=>Char.ispuncuation(x)).ToArray());
控制台写入线(临时);
}
您确定这比删除
和子串
更快吗?@Smartboy您认为舒尔的性能会有显著的提高吗?TrimStart很容易阅读。方法的整体性能(在机器上运行,并且被开发人员读取和理解时)可能是最好的。@Smartboy:这是最容易理解和最快的编写方法。如果这是执行时最快的方式,则只能通过一些分析来回答。但是,如果这是一个真正的性能问题,并且已经被编译器验证,请仅对此进行优化。如果你只认为这是一个性能问题,那么很可能不是。。。对现在这很尴尬,我不知道这是怎么过去的。