如何检测字符串中是否存在非拉丁字符?

3
我想将所有包含非拉丁字符的文件名更改为随机唯一的拉丁字符串。但是如何检测原始文件名中是否存在非拉丁字符呢?

编辑

非拉丁字符可能是中文、日文、韩文、阿拉伯文、umlaut等字符。


1
你需要更加具体,因为一些拉丁衍生字符可能不属于 A-z。例如这个 - Ä - T.S.
1个回答

6
您可以使用正则表达式:
if(Regex.IsMatch(input, "[^a-zA-Z]"))
{
    // non-latin found
}

对于除 azAZ 外的每个字母都有效。

如果您想要允许数字,使用以下正则表达式: [^a-zA-Z0-9]

非正则表达式解决方案

您也可以使用LINQ,因为 string 实现了 IEnumerable<char>:

if(input.ToLower().Any(c => c <= 'a' || c >= 'z'))
{
    // non-latin found
}

3
这会忽略任何带有重音的拉丁字符。 - Rei Miyasaka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接