Существует ли функция .NET для удаления первого (и только первого) вхождения в начале строки? - PullRequest
2 голосов
/ 24 июня 2010

Я использовал функцию TrimStart для выполнения следующих действий:

var example = "Savings:Save 20% on this stuff";
example = example.TrimStart("Savings:".ToCharArray());

Я ожидал, что это приведет к тому, что в примере будет показано значение «Экономьте 20% на этом материале».

Тем не менее, я получил «е 20% на этот материал».

После прочтения документации по TrimStart я понимаю, почему, но теперь мне остается задуматься, есть ли в .NET функция, которая делает то, что япытался сделать в первую очередь?

Кто-нибудь знает о функции, поэтому мне не нужно создавать свою собственную и отслеживать ее?

Ответы [ 3 ]

10 голосов
/ 24 июня 2010

Я не думаю, что такой метод существует, но вы можете легко сделать это, используя StartsWith и Substring:

s = s.StartsWith(toRemove) ? s.Substring(toRemove.Length) : s;

Вы даже можете добавить его в качестве метода расширения:

public static class StringExtension
{
    public static string RemoveFromStart(this string s, string toRemove)
    {
        if (s == null)
        {
            throw new ArgumentNullException("s");
        }

        if (toRemove == null)
        {
            throw new ArgumentNullException("toRemove");
        }

        if (!s.StartsWith(toRemove))
        {
            return s;
        }

        return s.Substring(toRemove.Length);
    }
}
2 голосов
/ 24 июня 2010

Вы можете сделать это довольно легко с помощью регулярного выражения.

Удалить вхождение в начале строки:

example = Regex.Replace(example, @"^Savings:", "");

Удалить первое вхождение в строке:

example = Regex.Replace(example, @"(?<!Savings:.*)Savings:", "");
2 голосов
/ 24 июня 2010

Нет, я не верю, что есть что-то, что делает это встроенным в фреймворк. Это несколько необычное требование, ИМО.

Обратите внимание, что вам следует тщательно подумать, пытаетесь ли вы удалить «первое вхождение» или удалить вхождение в начале строки , если оно есть. Например, подумайте, что вы хотите сделать: «Привет. Экономия: сэкономьте 20% на этом материале».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...