.net 检查字符是否为字母

6l7fqoea  于 2022-11-26  发布在  .NET
关注(0)|答案(7)|浏览(182)

我想检查一个字符串是否只包含正确的字母。我用了Char.IsLetter。我的问题是,当有像é或á这样的字符时,它们也被认为是正确的字母,而这是不应该的。
是否有可能检查字符是否为正确的字母A-Z或a-z,而没有像á这样的特殊字母?

gzszwxb4

gzszwxb41#

bool IsEnglishLetter(char c)
{
    return (c>='A' && c<='Z') || (c>='a' && c<='z');
}

您可以将其作为扩展方法:

static bool IsEnglishLetter(this char c) ...
ct2axkht

ct2axkht2#

您可以使用Char.IsLetter(c) && c < 128。或者仅使用c < 128本身,这似乎最符合您的问题。
但是您通过过滤字符来解决Encoding问题。请调查其他应用程序确切理解的内容。
可能你应该用Encoding.GetEncoding(someCodePage)来写。

mzmfm0qo

mzmfm0qo3#

可以使用正则表达式\w[a-zA-Z]

gwbalxhn

gwbalxhn4#

// Create the regular expression
string pattern = @"^[a-zA-Z]+$";
Regex regex = new Regex(pattern);

// Compare a string against the regular expression
return regex.IsMatch(stringToTest);
wmomyfyw

wmomyfyw5#

C# 9.0中,您可以使用模式匹配增强功能。

public static bool IsLetter(this char c) =>
    c is >= 'a' and <= 'z' or >= 'A' and <= 'Z';
mlnl4t2r

mlnl4t2r6#

从.NET 7开始,有一个Char.IsAsciiLetter函数可以完全满足要求
https://learn.microsoft.com/en-za/dotnet/api/system.char.isasciiletter?view=net-7.0

qhhrdooz

qhhrdooz7#

使用Linq可轻松访问:

if (yourString.All(char.IsLetter))
{
    //just letters are accepted.
}

相关问题