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

C# 如何检查字符串是否不等于多个字符串,c#,string,compare,C#,String,Compare,我希望用户插入一个字符串作为参数,然后检查该字符串是否等于几个字符串中的一个 我现在的做法是 .... if(stringParam != "text1" || stringParam != "text2" || stringParam != "text3"... stringParam != "text10") .... 难道没有一种方法可以让这篇文章更具可读性/美观吗?可能有,但我想不出办法 此外,字符串是大写还是小写也无关紧要。您可以使用哈希表、字典或哈希集。您可以将字符串存储为键,然

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

我现在的做法是

....
if(stringParam != "text1" || stringParam != "text2" || stringParam != "text3"...  stringParam != "text10")
....
难道没有一种方法可以让这篇文章更具可读性/美观吗?可能有,但我想不出办法


此外,字符串是大写还是小写也无关紧要。

您可以使用哈希表、字典或哈希集。您可以将字符串存储为键,然后使用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"); 

您可以使用哈希表、字典或哈希集。您可以将字符串存储为键,然后使用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"); 

您可以将正则表达式匹配与单个替代项一起使用:

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

您可以将正则表达式匹配与单个替代项一起使用:

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

// 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
}
您还可以使用哈希集

但这“闻起来”像是你在做一些可以通过其他方式更有效地完成的事情,但我们缺乏信息

就像费尔多说的,你可能想用这个

// 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
}
你可以试试这个:

// 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
}
您还可以使用哈希集

但这“闻起来”像是你在做一些可以通过其他方式更有效地完成的事情,但我们缺乏信息

就像费尔多说的,你可能想用这个

// 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
}

几个字符串中的一个,这些字符串是否有类似于示例中包含数字数据的命名模式?几个字符串中的一个,这些字符串是否有类似于示例中包含数字数据的命名模式?只是一个旁注,因为我遇到了它:toUpper不适用于turquish I。因为大写的turquish i不是您从toUpper得到的…您可能需要使用myString.Anys=>String.Compares、stringParam、CultureInfo.InvariantCulture、CompareOptions.IgnoreNonSpace,我只是想把这句话留给那些试图使用你的解决方案的人。只是一个旁注,因为我遇到了它:toUpper不与turquish I合作。因为大写的turquish i不是您从toUpper得到的…您可能需要使用myString.Anys=>String.Compares、stringParam、CultureInfo.InvariantCulture、CompareOptions.IgnoreNonSpace,我只是想把这句话留给那些试图使用你的解决方案的人。哈希集的一些构造函数接受IEqualityComparer。因此,为了适应不管字符串是大写还是小写,可以使用一个IgnoreCase字符串比较器,例如:new HashSetStringComparer.CurrentCultureIgnoreCase。HashSet的一些构造函数接受IEqualityComparer。因此,为了适应不管字符串是大写还是小写的情况,可以使用一个IgnoreCase字符串比较器,例如:new HashSetString Comparer.CurrentCultureIgnoreCase。