如何检查字符串是否仅包含英文字符

4

我有一个包含以下值的字符串:

string str ="Abhigyan Prakash,Primeshow,NewsPoint,NCP,Inflation,सरकार,राहुल,प्राइम शो,न्यूजप्वाइंट,कमजोर,एनसीपी,अभिज्ञान प्रकाश,Rahul";

我使用以下代码将其转换为数组列表:

我使用以下代码将其转换为ArrayList:

    ArrayList altags = new ArrayList( str.Split(','));

现在我想从ArrayList中删除所有属于非英语语言的字符串(在我的上下文中,那些用“印地语”书写的单词应该被删除)

请建议我如何检查字符串是用英语(带数字和符号)还是其他语言书写的。

注意:我对通用列表没有问题。我也不能把它带走。但请告诉我如何检查字符串是否只包含字母+数字+符号。谢谢


什么算是“英文”?只有ASCII字符,没有重音等吗?(顺便问一下,为什么要使用ArrayList?有没有不能使用通用集合的原因?) - Jon Skeet
只需像以前在 C++ 作业中所做的那样完成任务即可。请检查 ASCII 值,因为印地语字符是 Unicode 字符。 - Shekhar_Pro
哇..明白了..谢谢,请把它放在答案中。 - Dr. Rajesh Rolen
2个回答

4

如果您需要过滤含有拉丁字母、数字和空格的字符串,可以使用正则表达式。

        var regex = new Regex("[a-zA-Z0-9 ]*");
        var result = str.Split(',')
                        .Where(s => regex.Match(s).Value == s)
                        .ToArray();

4
根据ASCII表,包含数字的英语单词字符应该落在48-57(0-9)、65-90(A-Z)和97-122(a-z)范围内。您可能还想将标点符号和其他导入字符(例如来自fiancé的é)添加到范围中。

明白了,但是符号怎么办? - Dr. Rajesh Rolen
2
这取决于您的需求,如果您想检测英语,则必须在准确范围内比较字符,如果您只想丢弃印地语,则可能需要查找印地语字符范围。如果您丢弃大于255的任何字符,则很可能会丢弃印地语,但也可能会丢弃中文、日文等其他语言。 - Cristian T

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