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

C# 如何在字符串中只保留数字和一些特殊字符?,c#,regex,string,C#,Regex,String,我有一个包含常规字符、特殊字符和数字的字符串。我正在尝试删除常规字符,只保留数字和特殊字符。我使用循环检查字符是特殊字符还是数字。然后,我用一个空字符串替换它。然而,这似乎不起作用,因为我得到一个错误“不能应用!=到字符串或字符”。我的代码如下。如果可能的话,请给我一些想法来解决这个问题。谢谢 public string convert_string_to_no(string val) { string str_val = ""; int val_len = val.Length

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

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;
} 
public string将字符串转换为否(string val)
{
字符串str_val=“”;
int val_len=值长度;
对于(int i=0;i
似乎尝试将“-”改为“-”,最好是构造字符串而不是替换字符

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) && myChar == '-')
            {
                 str_val +=  myChar; 
            }
        }
        return str_val;
    } 
public string将字符串转换为否(string val)
{
字符串str_val=“”;
int val_len=值长度;
对于(int i=0;i
您可以使用正则表达式来实现这一点。它比使用loop和clean更快

    String test ="Q1W2-hjkxas1-EE3R4-5T";
    Regex rgx = new Regex("[^0-9-]");
    Console.WriteLine(rgx.Replace(test, ""));
检查工作代码,以执行Linq:

public static class StringExtensions
{
  public static string ToLimitedString(this string instance,
    string validCharacters)
  {
    // null reference checking...

    var result = new string(instance
      .Where(c => validCharacters.Contains(c))
      .ToArray());

    return result;
  }
}
用法:

var test ="Q1W2-hjkxas1-EE3R4-5T";
var limited = test.ToLimitedString("01234567890-");
Console.WriteLine(limited);
结果:

12-1-34-5


这项功能非常完美,非常简洁。谢谢。很高兴它对你有帮助。。如果你不介意,请接受答案。当然,我现在不能接受。必须等2分钟。@PavanTeja,请问如何保留所有数字和“.”?因此,当我有1.2035cm时,我将得到1.2035?@user2179427,您可以使用
Regex rgx=new Regex(“[^0-9\\.]”)