如何正确将字母转换为数字?

时间:2017-08-31 15:30:53

标签: c# ascii

我有一个包含大量字母的字符串。我使用以下代码将其转换为数字,但新字符串 t 仍然给我不完美的结果。 例如:

  

tung2003 - > -1-1-1-12003

     

我的期望: 1161171101032003(116是 t 的ASCII码,117是 u

的ASCII码
string t=null;
foreach (char c in Properties.Settings.Default.password)
{
      int ascii = (int)Char.GetNumericValue(c);
      int counter=0;
      counter = ascii;
      t = t + Convert.ToString(counter);
}

问题是 - 字符。我希望我的新字符串只包含数字。

3 个答案:

答案 0 :(得分:2)

看起来你希望根据你的预期输出得到数字的ASCII值。在这种情况下,您可以执行以下操作:

string input = "tung2003";

string output = string.Empty;

foreach(char c in input)
{
    if(char.IsNumber(c))
    {
        output += c;
    }
    else
    {
        output += ((byte)c).ToString();
    }           
}
//output is now: 1161171101032003

小提琴here

答案 1 :(得分:1)

还添加了Linq表达式作为短手解决方案。

        // Method 1 Linq
        string output = string.Concat(("tung2003".ToCharArray()
            .Select(s=> char.IsDigit(s) ? s.ToString() : ((int)s).ToString())));

        // Method 2
        string input = "tung2003";
        string output = string.Empty;

        foreach (char c in input)
        {
            if (Char.IsDigit(c)) output += c.ToString();
            else output += ((int)c).ToString();
        }

答案 2 :(得分:-1)

string t = "";
foreach (char c in Properties.Settings.Default.password)
{
      if (IsNumber(x)) t += System.Convert.ToInt32(c).ToString();
      else
      {
          t += c.ToString();
      }
}

而且,如果你只想摆脱' - '使用此代码:t =String.Replace(t, '-');