用于多个参数精确匹配的 C# 字符串方法 [重复]

Posted

技术标签:

【中文标题】用于多个参数精确匹配的 C# 字符串方法 [重复]【英文标题】:C# string method for exact match on multiple params [duplicate] 【发布时间】:2017-02-16 14:44:45 【问题描述】:

是否有标准的String方法可以采用多个参数进行精确比较?

T-SQL 中的等价物是 IN('dog','cat',...)

例如,如果有这样一个名为 EqualToAny() 的方法,那么下面的代码应该返回 false

string s="catfish";
if (s.EqualToAny("dog", "cat", "human", "dolphin"))
   return true;
else
   return false;

【问题讨论】:

所以鲶鱼应该是假的没有什么意义。提供清晰的输入和所需的输出。 你的意思是你想要new [] "dog", "cat", "human" .Contains(s)而不是s == "dog" || s == "cat" || s == "human" @HenkHolterman 我读的越多,我就越困惑 我希望下面的代码为哺乳动物返回 true 但 ContainsAny 返回 true 也不是很清楚。 为什么没有来自 OP 的任何输入?是时候关闭这个了。 【参考方案1】:

您可以使用 Linq Any() 方法实现此目的。

string input = "catfish";
var mammals = new [] "dog", "cat", "human", "dolphin";
var result = mammals.Any(v => v == input);

对于"catfish"result 将是false,对于"cat",将是true

你也可以把它包装成一个字符串的扩展方法:

public static bool EqualsAny(this string str, IEnumerable<string> validStrings) 
    return validStrings.Any(v => v == str);


var result = input.EqualsAny(mammals);

Fiddle

【讨论】:

问题尚不清楚,但实际上可能是 OP 想要更像 mammals.Any(v =&gt; input.Contains(v)) 的东西,但似乎希望只有在有单词边界的情况下才匹配“猫” “我有一只猫”,但不是因为“我吃鲶鱼”之类的。 看起来 OP 在字符串对象上寻找方法,而不是在集合上。 现在基于编辑这是正确的,但当然你可以刚刚完成mammals.Contains(input) 是的,如果我们不需要任何花哨的字符串比较,Contains 也可以工作(例如v =&gt; v.Equals(str, StringComparison.OrdinalIgnoreCase)【参考方案2】:

你需要 EqualsAny ..

    // string extension method 
    public static bool EqualsAny(this string source, params  string[] prms)
    
        return prms.Contains(source);
    

【讨论】:

谢谢,这正是我想要的。我只是希望已经有一种方法可以做到这一点。 @userSteve -- 我想指出,您未能参与此论坛,因为所有澄清您的问题的尝试都没有得到您的回答。考虑到您完全忽略了试图帮助您的人数,这非常令人沮丧。 @rory.ap 我同意我最初的问题本来可以更好地形成,我很高兴有这么多回复这么快,但这真的只是几分钟的事情!这不是过去的日子! @userSteve -- 嗯,这就是这个网站的运作方式。如果你不在场澄清你的问题,它会很快被否决并关闭,然后被遗忘。我不建议发布然后走开。仅在您准备好坐在那里回复时才发布。

以上是关于用于多个参数精确匹配的 C# 字符串方法 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

pyspark字符串匹配多个精确单词正则表达式的有效方法

具有多个返回参数的 C# 方法[重复]

正则表达式从字符串中精确匹配 11 位电话号码并从 C# 中的匹配中删除连字符(-)

用于精确文本匹配的 NEST 查询

[ jquery 过滤器 slice(start, [end]) ] 此方法用于在选择器的基础之上精确筛选出匹配的子集(可以使用前导限制范围)

Pandas str.contains 用于部分字符串的精确匹配