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

私はこの2つの方法を好みます:

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 に答える