【问题标题】:How to check if string contains list value and separately if contains but with other value如何检查字符串是否包含列表值以及是否包含但具有其他值
【发布时间】:2017-05-16 07:35:57
【问题描述】:

我试图弄清楚如何定义字符串是否包含/不包含列表值以及是否包含但具有其他值。

如果我有输入字符串:

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"); 

【问题讨论】:

    标签: c# regex string conditional-statements


    【解决方案1】:

    我认为您正在寻找这样的东西:

    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的例子

    【讨论】:

    • 如果inputString 中的每个单词之间有多个空格,则返回else if part。例如 => 零一二。删除额外的可以处理它。 (所以评论输入区域已经删除了多余的。哈哈)
    • 如果它们是单词之间的额外空格,您可以使用StringSplitOptions.RemoveEmptyEntries 排除这些空格,请参阅帖子中的更新
    • @un-lucky 你好,似乎是答案,但不确定我是否不使用 StringSplitOptions.RemoveEmptyEntries “它是一个”的结果是什么?
    • 当我们执行拆分时,它将基于单个空格进行拆分,因此,如果它们的空格数更多,则会导致集合中的项目为空。避免我们使用StringSplitOptions.RemoveEmptyEntries
    • @un-lucky 是的,但在我的情况下不需要,我只允许输入字符串中的单词之间有一个空格
    【解决方案2】:

    为什么不使用下面的代码?我想不出它失败的一种情况。

                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

    【讨论】:

    • 你好,两种方法都有用,在某些情况下,这一种可能更合适,取决于。无论如何,两个答案都可以使用
    猜你喜欢
    • 1970-01-01
    • 2021-11-07
    • 2012-05-06
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 2018-03-12
    相关资源
    最近更新 更多