簡體   English   中英

如何僅將數字和某些特殊字符保留在字符串中?

[英]How to keep only numbers and some special characters in a string?

我有一個包含常規字符,特殊字符和數字的字符串。 我正在嘗試刪除常規字符,只保留數字和特殊字符。 我使用循環檢查字符是特殊字符還是數字。 然后,我將其替換為空字符串。 但是,這似乎不起作用,因為出現錯誤“無法將!=應用於字符串或char”。 我的代碼如下。 如果可能的話,請給我一些解決辦法。 謝謝。

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;
} 

您可以使用正則表達式來做到這一點。它比使用循環和清理更快

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

這里檢查工作代碼

似乎嘗試將“-”更改為“-”,更好地構造字符串而不替換char。

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;
    } 

我認為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

DotNetFiddle示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM