字符串C#中的搜索字符串

时间:2012-09-18 07:40:27

标签: c# asp.net linq split

我有一个字符串“EMP1$0,EMP2$1,EMP3 $1, Emp4$ 0, emp44$1”;这些是由昏迷(,)分隔的员工代码。每个员工代码都附有其状态(即1表示活动,0表示非活动,用$符号分隔)。员工代码不包含空格,但员工代码和$之间可以有空格。我需要检查员工代码是否在此字符串中显示“EMP4”。哪种方法最好?

任何帮助都非常值得赞赏。

编辑:

var strResult = from string str in hdnEmpCodes.Value.Split(',') 
                where str.Length > 0 && str.Substring(0, str.IndexOf("$")).Trim() == lnkEmpCode.Text.Trim() 
                select str.ToString(); 

但它没有提供所需的输出。

5 个答案:

答案 0 :(得分:3)

你可以使用string.Contains方法

bool employeeExistsInString = string.Contains(yourString);

如果您至少先使用Google搜索,那就不错了。

答案 1 :(得分:2)

使用string.Contains

if(str.Contains("EMP4"))

编辑:根据您的评论。

由于您在问题中说过您的值将以逗号分隔。您可以尝试以下方法。

string str = "EMP10, EMP44, EMP5"; //your sample string. 
string[] tempArray = str.Split(',');
if (tempArray.Contains("EMP4")) //This will result in Not Found
{
    Console.WriteLine("Found");
}
if (str.Contains("EMP4")) //But a simple string.Contains will result in matching 
                          //it to EMP44
{
    Console.WriteLine("here");
}

答案 2 :(得分:2)

如果您从以下开始:

var text = "EMP1$0,EMP2$1,EMP3 $1, Emp4$ 0, emp44$1";

然后,您可以执行此查询以提取“EMP”代码:

var query =
    from x in text.Split(',').Select(_ => _.Trim())
    let y = x.Split('$').Select(_ => _.Trim())
    where y.Any()
    select y.First();

这会得到以下结果:

EMP query result

现在检查是否有任何返回的值匹配是一件简单的事情。

var found = query.Any(x => x.ToUpperInvariant() == "EMP4");

这可以满足您的需求吗?

答案 3 :(得分:0)

创建csv列表并在列表中使用contains

答案 4 :(得分:0)

你可以使用正则表达式

Regex r = new Regex("EMP4[^\\d]"); 
Match m = r.Match(yourString); 
if (m.Success) 
{
    // your code
}

搜索任何EMP4字符串后面没有其他数字