char 数组返回值,如 50'w'

char array returning value like 50'w'

语言=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'

有什么方法可以避免字符的这种数字表示(50、87 等)? ?? (没有修剪)

试试这个:- 您正在获取字符的 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);     

}   

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