如何检查字符串是否包含列表值,如果包含但是与其他值分开
问题描述:
我想知道如何定义字符串包含/不包含列表值,如果包含但其他值。如何检查字符串是否包含列表值,如果包含但是与其他值分开
如果我有输入字符串:
string inputString = "it was one";
,我想为条件找到特定的值:
var numbList = new List<string> {"zero", "one", "two"};
if (!numbList.Any(inputString.Contains))
{
Console.WriteLine("string does not contains list value");
}
else
{
Console.WriteLine("string contains list value");
}
但不知道什么是正确的方式,如果我想也对第三个条件就知道如果字符串包含值,但也包含其他字。
对于字符串:inputString = "it was one";
理想的结果应该是:
Console.WriteLine("string contains list value and other words");
字符串:inputString = "one";
Console.WriteLine("string contains list value");
和:inputString = "it was";
Console.WriteLine("string does not contains list value");
答
我认为你正在寻找类似这个:
if (inputString.Split(new string[]{" "},StringSplitOptions.RemoveEmptyEntries).All(x => numbList.Contains(x)))
{
opDisplay="string contains list value";
}
else if (numbList.Any(x => inputString.Contains(x)))
{
opDisplay = "string contains list value and other words";
}
else
{
opDisplay = "string does not contains list value";
}
你可以尝试一个例子here
答
为什么下面的代码不会用?我无法想象它失败的一个条件。
string inputString = "it was one ";
var numbList = new List<string> { "zero", "one", "two" };
if (numbList.Any(x => inputString.Contains(x)))
{
if (numbList.Any(x => inputString.Trim().StartsWith(x) && inputString.Trim().EndsWith(x)))
{
Console.WriteLine("string contains list value");
}
else
{
Console.WriteLine("string contains list value and other words");
}
}
else
{
Console.WriteLine("string does not contains list value");
}
找到小提琴here
+0
hello,这两种方式都是有用的,在某些情况下这个可以更合适, 依靠。无论如何,这两个答案都可以使用 – nikorio
是否有在'inputString'那么如果一部分返回其他每个字之间的多个空格。例如=> **零一二**。删除多余的可以处理它。 (SO注释输入区域已经删除了额外的文件)lol) – Badiparmagi
如果它们之间有额外的空格表示,你可以使用'StringSplitOptions.RemoveEmptyEntries'来排除那些空的空格,看到文章中的更新 –
@ un-lucky Hello,好像它是答案,但不知道如果我不使用StringSplitOptions.RemoveEmptyEntries什么是“它是一个”的重要吗? – nikorio