如何确定逗号分隔列表是否包含值?

时间:2014-12-14 11:51:08

标签: c# .net string csv

我有:

var a1 = "1,2,12,13";
var a2 = "2,12,13";

var b1 = a1.Contains(1); // Should give true
var b2 = a2.Contains(1); // Should give false

如何判断字符串a是否包含值1而不是任何1?

3 个答案:

答案 0 :(得分:5)

您可以使用此扩展方法。请记住,如果您的输入字符串有任何问题,那么这将抛出异常,您可以根据需要添加异常处理。 (比如使用int.TryParse或支持不同的分隔符而不是逗号)

public static class StringExtension
{
    public static bool ContainsInt(this string str, int value)
    {
        return str.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
            .Select(x => int.Parse(x.Trim()))
            .Contains(value);
    }
}

这会将您的字符串拆分为,,因此您将拥有所有数字,但是以字符串形式显示。然后尝试将它们转换为整数值。之后,检查这些值是否包含所需的整数值。 像这样使用它

var a1 = "1,2,12,13";
var a2 = "2,12,13";

var b1 = a1.ContainsInt(1); // gives true
var b2 = a2.ContainsInt(1); // gives false

如果你想在没有扩展方法的情况下使用它,你可以这样做

var a1 = "1,2,12,13";
var a2 = "2,12,13";

var b1 = a1.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
            .Select(x => int.Parse(x.Trim()))
            .Contains(1); // gives true

var b2 = a2.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
            .Select(x => int.Parse(x.Trim()))
            .Contains(1); // gives false

答案 1 :(得分:0)

如果您确定您的字符串不包含空格,您可以使用它:

public static class StringExtension
{
    public static bool ContainsValue(this string str, object value)
    {    
       return str.StartsWith(value.ToString()+",") ||  str.EndsWith(","+value) || str.Contains(","+value+",");
    }
}

答案 2 :(得分:-1)

 private bool IsFound(string input)
    {

        string[] a1_values = input.Split(',');


        foreach (string item in a1_values)
        {
            if (item == "1")
            {

               return true;
            }
            else
            {

                return false;

        }

    }