与一组字符串值的字符串比较

时间:2013-08-05 13:32:54

标签: c# .net string

我有这样的函数(foo):我需要比较输入字符串并相应地执行任务。 任务相同,但仅适用于一组选定的值。对于所有其他值,什么都不做。

function foo(string x)

{
if(x == "abc")
    //do Task1

if(x == "efg")
    //do Task1
if(x == "hij")
    //do Task1
if(x == "lmn")
    //do Task1
}

除此之外还有其他方法可以进行检查吗?或者将OR运算符放在if内?

首选方式是什么?

4 个答案:

答案 0 :(得分:10)

有很多方法可以做到这一点。一个如下:

var target = new HashSet<string>{ "abc", "efg", "lmn" };
if (target.Contains(x)) {
    ...
}
  

在max [我的字符串列表]可以增长到50个字符串,这是一种罕见的可能性。

然后你应该在课堂上targetstatic readonly,如下所示:

private static readonly StringTargets = new HashSet<string>{ "abc", "efg", "lmn" };

这样做可以确保集合只创建一次,并且每次执行完成后都不会重新创建集合。

答案 1 :(得分:7)

这样做

function foo(string x)
{
  switch(x)
  {
      case "abc":
      case "efg":
      case "hij":
      case "lmn":
        {
          //do task 1
          break;
        }
      default:
        break;
  }
}

或者你也可以这样做

if(x == "abc"||x == "efg"||x == "hij"||x == "lmn")
   //do Task1

答案 2 :(得分:0)

一种方法是创建一个可接受的字符串数组,然后查看该数组是否包含x

function foo(string x)

{


     string[] strings = new string[] {"abc", "efg", "hij", "lmn"};

     if (strings.contains(x)){
        //do task 1
     }
}

答案 3 :(得分:-1)

您可以使用带有默认值的switch语句来捕获任何与

不匹配的内容

http://blogs.msdn.com/b/brada/archive/2003/08/14/50227.aspx

function foo(string x) {

    switch(x) {

     case "abc":
      //do task 1
     break;

     case "efg":
      //do task 2
     break;

     default:
      //all other cases
     break;
    }
}