如何检查字符串是否不等于多个字符串

时间:2019-09-24 06:00:10

标签: c# string compare

我希望用户插入一个字符串作为参数,然后检查该字符串是否等于几个字符串之一。

我现在做的方式是

....
if(stringParam != "text1" || stringParam != "text2" || stringParam != "text3"...  stringParam != "text10")
....

有没有办法写出更具可读性/更漂亮的东西?可能有,但我找不到办法。

此外,字符串是大写还是小写也没关系。

3 个答案:

答案 0 :(得分:4)

您可以使用Hashtable,Dictionary或HashSet。您可以将字符串作为键存储在其中,然后使用ContainsKey()/ Contains()方法查看stringParam是否与先前存储的任何键(“ text1”,“ text2”等)匹配。

    HashSet<string> mySet = new HashSet<string>(); 


    mySet.Add("text1"); 
    mySet.Add("text2"); 
    mySet.Add("text3"); 
    mySet.Add("text4"); 

    if (mySet.Contains(stringParam)) 
        Console.WriteLine("It matched"); 

答案 1 :(得分:0)

您可以将regex匹配使用一个单独的替代项:

Regex regex = new Regex(@"\b(?:text1|text2|text3|...|text10)\b");
string stringParam = "passes";
Match match = regex.Match(stringParam);
if (!match.Success)
{
    Console.WriteLine("MATCH");
}

答案 2 :(得分:0)

您可以尝试以下方法:

// build a string array containing what you want to match.
var myStrings = new [] { "TEXT1", "TEXT2", "TEXT3", ....... };

// search in it
if (myStrings.Contains(stringParam.ToUpper()))
{
    // yes
}

您也可以使用HashSet<T>

但是这种“气味”就像您在做可以通过其他方式更有效地完成的工作一样,但是我们缺少信息。


就像Fildor所说的那样,您可能要使用这个。

// build a string array containing what you want to match.
var myStrings = new [] { "TEXT1", "TEXT2", "TEXT3", ....... };

// search in it
if (myStrings.Any(s => String.Compare(s, stringParam, CultureInfo.InvariantCulture, CompareOptions.IgnoreNonSpace))
{
    // yes
}