byte[] ASCIIValues = Encoding.ASCII.GetBytes(myInput);
while (I < ASCIIValues.Length)
{
{
if ((ASCIIValues[I] > 65 & ASCIIValues[I] < 90) || (ASCIIValues[I] > 97 & ASCIIValues[I] < 122))
{
}
ASCIIValues[I] = 32;
}
Console.WriteLine(ASCIIValues[I]);
I++;
}
这就是我现在所拥有的,我正在努力确保用户输入的字符串(我的输入)仅在一个字母的范围内。我试图删除所有标点符号和特殊字符以及数字。我等于0并用于迭代数组。将所有不需要的字符更改为空格是因为在我的代码中我正在删除空格。
运行代码时,每个返回的ASCII值为32
。这没有任何意义,因为字母应该返回相应的ASCII值。
答案 0 :(得分:7)
我正在尝试确保用户输入的字符串(我的输入)仅在字母范围内
可能有更简单的方法可以做到这一点。
bool isAllLetter = yourString.All(char.IsLetter);
我正在尝试删除所有标点符号和特殊字符以及数字
var cleanStr = String.Join("", str.Where(char.IsLetter));
答案 1 :(得分:6)
(正如L.B所说,有更简单的方法可以做到这一点 - 但是值得研究为什么你当前的代码也不起作用。)
运行代码时,每个返回的ASCII值都是32
是的,它会的。仔细看看你的循环:
while (I < ASCIIValues.Length)
{
{
if ((ASCIIValues[I] > 65 & ASCIIValues[I] < 90) || (ASCIIValues[I] > 97 & ASCIIValues[I] < 122))
{
}
ASCIIValues[I] = 32;
}
Console.WriteLine(ASCIIValues[I]);
I++;
}
您在if
区块中正在 ,而是无条件将ASCIIValues[I]
设置为32。
此外:
for
循环而不是while
循环。'A'
等)指定字符会使代码更易于阅读&&
代替&
此处