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