4

我正在使用 c# 并且我有一个字符串

-Xyz
--Xyz
---Xyz
-Xyz-Abc
--Xyz-Abc

我只是想删除任何前导特殊字符,直到字母出现,注意:字符串中间的特殊字符将保持不变。最快的方法是什么?

4

2 回答 2

9

您可以使用string.TrimStart并传入要删除的字符:

var result = yourString.TrimStart('-', '_');

但是,如果您要删除的特殊字符的数量众所周知且很少,这只是一个好主意。
如果不是这种情况,您可以使用正则表达式:

var result = Regex.Replace(yourString, "^[^A-Za-z0-9]*", "");
于 2012-12-07T09:35:35.747 回答
0

我更喜欢这两种方法:

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);
}
于 2012-12-07T10:06:14.327 回答