如何只保留字符串中的数字和一些特殊字符?

Lou*_*ran 1 c# regex string

我有一个包含常规字符,特殊字符和数字的字符串.我正在尝试删除常规字符,只保留数字和特殊字符.我使用循环来检查字符是特殊字符还是数字.然后,我用空字符串替换它.但是,这似乎不起作用,因为我收到错误"无法应用!=字符串或字符".我的代码如下.如果可能的话,请给我一些想法来解决这个问题.谢谢.

public string convert_string_to_no(string val)
{
    string str_val = "";
    int val_len = val.Length;
    for (int i = 0; i < val_len; i++)
    {
        char myChar = Convert.ToChar(val.Substring(i, 1));
        if ((char.IsDigit(myChar) == false) && (myChar != "-"))
        {
             str_val = str_val.replace(str_val.substring(i,1),"");
        }
    }
    return str_val;
} 
Run Code Online (Sandbox Code Playgroud)

Pav*_*eja 5

你可以使用正则表达式来做到这一点.比使用循环和清理更快

    String test ="Q1W2-hjkxas1-EE3R4-5T";
    Regex rgx = new Regex("[^0-9-]");
    Console.WriteLine(rgx.Replace(test, ""));
Run Code Online (Sandbox Code Playgroud)

这里查看工作代码