加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 检查ASCII是否在两个范围内

发布时间:2020-12-16 00:21:56 所属栏目:百科 来源:网络整理
导读: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++;}
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值.

解决方法

(正如L.B所说,有更简单的方法可以做到这一点 – 但是值得研究为什么你当前的代码也不起作用.)

When running the code every returned ASCII value is 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循环.>你真的不需要在这里将字符转换为字节;无论如何,每个ASCII字符都具有相同的Unicode值.>使用字符文字(‘A’等)指定字符将使代码更易于阅读>您应该采用.NET命名约定来使您的代码更加惯用>你应该使用&&而不是&这里

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读