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

本文关键字:列表 是否 包含值 分隔 何确定 | 更新日期: 2023-09-27 18:34:08

我有:

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?

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

您可以使用此扩展方法。请记住,如果您的输入字符串有任何问题,那么这将引发异常,您可以根据需要向其添加异常处理。(例如使用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

如果你确定你的字符串不包含空格,你可以使用这个:

public static class StringExtension
{
    public static bool ContainsValue(this string str, object value)
    {    
       return str.StartsWith(value.ToString()+",") ||  str.EndsWith(","+value) || str.Contains(","+value+",");
    }
}
 private bool IsFound(string input)
    {
        string[] a1_values = input.Split(',');

        foreach (string item in a1_values)
        {
            if (item == "1")
            {
               return true;
            }
            else
            {
                return false;
        }
    }