Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中删除字符串中前导特殊字符的最快方法#_C#_String - Fatal编程技术网

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

我用的是c#,我有一个类似

-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:这是最容易理解和最快的编写方法。如果这是执行时最快的方式,则只能通过一些分析来回答。但是,如果这是一个真正的性能问题,并且已经被编译器验证,请仅对此进行优化。如果你只认为这是一个性能问题,那么很可能不是。。。对现在这很尴尬,我不知道这是怎么过去的。