我有一个字符串“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();
但它没有提供所需的输出。
答案 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();
这会得到以下结果:
现在检查是否有任何返回的值匹配是一件简单的事情。
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字符串后面没有其他数字