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

-1 .net c# csv string

我有:

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
Run Code Online (Sandbox Code Playgroud)

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

Ham*_*jam 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

这将拆分你的字符串,,所以你将拥有所有的数字,但在字符串表示.然后尝试将它们转换为整数值.之后,检查这些值是否包含所需的整数值.像这样使用它

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
Run Code Online (Sandbox Code Playgroud)

如果您想在没有扩展方法的情况下使用它,您可以执行此操作

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
Run Code Online (Sandbox Code Playgroud)

  • 添加`using System.Linq;` (2认同)