我需要检查我的字符串是否只包含字母而不包含数字。请注意我知道stackoverflow上已经发布了很多,但是没有一个对我有帮助,因为它没有使用基本功能!
这是我的作业,但请帮忙,因为我无法解决问题。
我通过使用Regex.IsMatch完成了这项工作,但是老师告诉我,我只能使用.net库中的基本函数,并且使用复杂的函数,例如 - 排序,搜索字符以及类似的东西是严格禁止的。
我的代码
Console.Write("Enter your name: ");
name = Console.ReadLine();
if (Regex.IsMatch(name, "[^A-Za-z_ŠšČ莞ĆćĐđ]"))
{
Console.WriteLine("No name entered!");
Console.ReadLine();
}
我完全没有任何线索,如何以其他方式做到这一点。所以,如果有任何人愿意帮助我或给我一个暗示,生病真的很高兴。
谢谢。
答案 0 :(得分:2)
使用char.IsLetter
检查字符串中的所有字符是否为Letter。
if (name.All(char.IsLetter))
{
//All characters are letters
}
与:
相同if (name.All(r => char.IsLetter(r)))
答案 1 :(得分:0)
循环字符并检查它们的ascii值:
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;
}
我会提供另一种方法。我使用了一对扩展方法来实现这一点,让我可以灵活地查找任何一组字符:
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;
}
}
答案 2 :(得分:0)
不使用任何特殊功能:
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);
}
}
}
}
答案 3 :(得分:0)
好吧,我看到答案已经被接受了,但是它使用了一个提问者说他不能使用的功能,所以既然我找到了答案的麻烦,我会把它放在这里为了即将到来得出结论。
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();