语言= 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'
答案 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);
}