Как удалить символы из строки с помощью LINQ

Я строку

XQ74MNT8244A

Я хочу удалить все char из строки.

таким образом, выход будет похож на

748244

как это сделать? Пожалуйста, помогите мне сделать это

8 ответов


new string("XQ74MNT8244A".Where(char.IsDigit).ToArray()) == "748244"

два варианта. Использование Linq на .Net 4 (на 3.5 похоже - у него не так много перегрузок всех методов):

string s1 = String.Concat(str.Where(Char.IsDigit));

или, используя регулярное выражение:

string s2 = Regex.Replace(str, @"\D+", "");

Я должен добавить, что IsDigit и \D являются Unicode-aware, поэтому он принимает довольно много цифр, кроме 0-9, например "542abc٣٤".
Вы можете легко адаптировать их к проверке между 0 и 9 или [^0-9]+.


string value = "HTQ7899HBVxzzxx";
Console.WriteLine(new string(
     value.Where(x => (x >= '0' && x <= '9'))
     .ToArray()));

Если вам нужны только цифры, и вы действительно хотите Linq попробуйте это:

youstring.ToCharArray().Where(x => char.IsDigit(x)).ToArray();

использование LINQ:

public string FilterString(string input)
{
    return new string(input.Where(char.IsNumber).ToArray());
}

что-то вроде этого?


"XQ74MNT8244A".ToCharArray().Where(x => { var i = 0; return Int32.TryParse(x.ToString(), out i); })

string s = "XQ74MNT8244A";
var x = new string(s.Where(c => (c >= '0' && c <= '9')).ToArray());

Как насчет метода расширения (и перегрузки), что делает это для вас:

    public static string NumbersOnly(this string Instring)
    {
        return Instring.NumbersOnly("");
    }

    public static string NumbersOnly(this string Instring, string AlsoAllowed)
    {
        char[] aChar = Instring.ToCharArray();
        int intCount = 0;
        string strTemp = "";

        for (intCount = 0; intCount <= Instring.Length - 1; intCount++)
        {
            if (char.IsNumber(aChar[intCount]) || AlsoAllowed.IndexOf(aChar[intCount]) > -1)
            {
                strTemp = strTemp + aChar[intCount];
            }
        }

        return strTemp;
    }

перегрузка такова, что вы можете сохранить" -", " $ " или ".- ну, если хотите (вместо цифр).

использование:

string numsOnly = "XQ74MNT8244A".NumbersOnly();