c# - 如何知道一个字符串只包含特定的单词

标签 c# arrays regex string

如何检查字符串是否只包含数组中的单词?

我可以返回 true如果字符串包含数组中的任何单词,则使用 Contains()

public bool ValidateString(string strCondition)
{
       List<string> words = new List<string>() { "true", "false", "&&", "||", " " };
       foreach (string word in words)
       {
            if(strCondition.Contains(word))
                return true;                
       }
       return false;
}

但是我怎样才能返回false如果作为参数发送的字符串( strCondition )包含除 true 以外的任何单词或字母或数字等, false , && , || , Regex里面有没有选项或者有人能想出一个好的解决方案吗?

编辑

下面应该返回true

true && false || false && false
true || false && false && false

下面应该返回 false,因为它包含除 true 之外的单词/数字/特殊字符, false , && , || ,

true & false || false < false  
true >> false && false && false
true and false 123 false && false
true || false && false xyz false

最佳答案

首先,您的代码存在 clbuttic problem 问题: 它会返回 true对于包含单词“untrue”的字符串,因为代码不注意单词边界。

如果您想检查是否不包含其他单词,请拆分字符串,并根据“已批准”单词列表检查每个项目:

var allApproved = strCondition.Split(' ').All(word => words.Contains(word));

这种方法意味着 words 中的单词不包含空格。

请注意,这不是最有效的方法,尽管它适用于小型列表。如果列表很长,切换到 HashSet<string>相反。

Demo.

关于c# - 如何知道一个字符串只包含特定的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29235926/

相关文章:

C# - 用空格解析文件名的最简单方法,例如。 "C:\Test\File with spaces.txt"

c# - 使用 TextFieldParser 处理包含未转义双引号的字段

javascript - 如何像开发者控制台一样计算数组中的项目数

c - 从函数返回时保护 char[] 的最佳方法?

regex - Scala 正则表达式(由双引号分隔的字符串)

python - 在 Python 中重复捕获奇怪的结果

c# - 从 IEnumerable 中选择项目

c# - CSLA 中的单元测试?如何?什么?

javascript - 如何在angularJS中使用slice()方法pn对象数组

regex - 数据注释正则表达式来检查特定数字之间的数字