Verifying that a string contains only letters in console application in c#
本问题已经有最佳答案,请猛点这里访问。
我需要检查我的字符串是否只包含字母而不包含数字。请注意,我知道在StackOverflow上已经发布了很多内容,但是它们都不能帮助我,因为它不使用基本功能!
这是我的作业,但请帮忙,因为我解决不了问题。
我通过使用regex.ismatch完成了这项工作,但老师告诉我只能使用.NET库中的基本函数,并且严禁使用复杂函数,如排序、搜索字符等。
我的密码
1 2 3 4 5 6 7 8 | Console.Write("Enter your name:"); name = Console.ReadLine(); if (Regex.IsMatch(name,"[^A-Za-z_??????????]")) { Console.WriteLine("No name entered!"); Console.ReadLine(); } |
我什么都不知道,怎么用另一种方法。所以如果有人愿意帮助我或给我一个暗示,我会非常高兴。
谢谢您。
使用
1 2 3 4 | if (name.All(char.IsLetter)) { //All characters are letters } |
它是一样的:
1 | if (name.All(r => char.IsLetter(r))) |
好吧,我看到答案已经被接受了,但它使用了提问者说他不能使用的功能,所以,既然我遇到了构建答案的麻烦,我会把它放在这里,以便得出结论。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Console.WriteLine("Enter your name:"); string s = Console.ReadLine(); byte[] chars = Encoding.UTF8.GetBytes(s); bool hasnonletters = false; for (int x = 0; x < chars.Length; x++) { Console.Write("."); int ascii = (int)chars[x]; if (!((ascii > 64 && ascii < 91) || (ascii > 96 && ascii < 123))) { hasnonletters = true; break; } } if (hasnonletters) { Console.WriteLine("{0} has Non-letters!", s); } else { Console.WriteLine("{0} is all letters!", s); } Console.ReadKey(); |
不使用任何特殊功能:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public void RecognizeOnlyLettersInString() { string name ="test the 123 thing"; Console.WriteLine(name); string letters ="abcdefghijklmnopqrstuvwxyz"; foreach (char c in name) { foreach(char letter in letters) { if (c == letter) { break; } if (letters.IndexOf(letter) == letters.Count() - 1) { Console.WriteLine("{0} is not a letter", c); } } } } |
循环字符并检查其ASCII值:
1 2 3 4 5 6 7 8 9 | public Boolean IsAllLetters(String name) { for (Int32 i = 0; i < name.Length; i++) { if ((Int32)name[i] < 65 || ((Int32)name[i] > 90 && (Int32)name[i] < 97) || (Int32)name[i] > 122) return false; } return true; } |
我将提供另一种方法。我使用了一对扩展方法来实现这一点,使我能够灵活地查找任何一组字符:
1 2 3 4 5 6 7 8 9 10 11 12 | public static class StringEx { public static Boolean ContainsOnly(this String theString, String characters) { return theString.TrimStart(characters.ToCharArray()).Length == 0; } public static Boolean ContainsOnly(this String theString, Char[] characters) { return theString.TrimStart(characters).Length == 0; } } |