C#从字符串中删除不需要的字符

Lir*_*Yeo 1 c# string char

我查看过其他帖子,所有帖子都知道不需要的字符.在我的情况下,我有一堆我想要的角色,我只想保留那些.

我的代码太乱了:

private string RemoveUnwantedChar(string input)
{
    string correctString = "";

    for (int i = 0; i < input.Length; i++)
    {
        if (char.IsDigit(input[i]) || input[i] == '.' || input[i] == '-' || input[i] == 'n'
                || input[i] == 'u' || input[i] == 'm' || input[i] == 'k' || input[i] == 'M'
                || input[i] == 'G' || input[i] == 'H' || input[i] == 'z' || input[i] == 'V'
                || input[i] == 's' || input[i] == '%')
            correctString += input[i];
    }
    return correctString;
}
Run Code Online (Sandbox Code Playgroud)

我想要的角色:0123456789numkMGHzVs%-.

w.b*_*w.b 7

您可以使用LINQ:

var allowedChars = "0123456789numkMGHzVs";
var result = String.Join("", input.Where(c => allowedChars.Any(x => x == c)));
Run Code Online (Sandbox Code Playgroud)

另外一个选项:

var result = String.Join("", str.Where(c => allowedChars.Contains(c)));
Run Code Online (Sandbox Code Playgroud)