char数组返回值如50'w'

时间:2018-06-18 04:10:43

标签: c# visual-studio-2015 char

语言= C# 软件= Visual Studio 2015

在编写程序以查找给定字符串中的整数总和时,我面临问题。 从字符串中提取每个字符时,我得到87'W',101'e'而不是'w''e'的值。 (也显示不需要的char的相应整数)

程序:

public static void Main()     
{     
     string s = "Welcome to 2018";     
     int sumofInt = 0;     
       for (int i = 0; i < s.Length; i++)     
       {     
           if (Char.IsDigit(s[i]))     
           {     
               sumofInt += Convert.ToInt32(s[i]);     
           }     
       }     
    Console.WriteLine(sumofInt);     

}   

预期o / p = 11 实际o / p = 203

这里的s[i]值来自50'2'

有没有办法避免这种数字表示charater(50,87等)? ?? (没有修剪)

2 个答案:

答案 0 :(得分:1)

试试这个: - 你将char的ASCII表示形式作为整数

public static void Main()     
{     
     string s = "Welcome to 2018";     
     int sumofInt = 0;     
       for (int i = 0; i < s.Length; i++)     
       {     
           int val = (int)Char.GetNumericValue(s[i]);
           if (Char.IsDigit(val))     
           {     
               sumofInt += Convert.ToInt32(val);     
           }     
       }     
    Console.WriteLine(sumofInt);     

}   

答案 1 :(得分:0)

'0'..'9'范围的典型技巧是减去'0'

char digit = '7';
int value = digit - '0';

您可以借助 Linq

来简化代码
public static void Main() {
  string s = "Welcome to 2018";     

  int sumofInt = s.Sum(c => c >= '0' && c <= '9' // do we have digit?
    ? c - '0'                                    // if true, take its value
    : 0);                                        // else 0

  Console.WriteLine(sumofInt);
}