如何确定逗号分隔的列表是否包含值
本文关键字:列表 是否 包含值 分隔 何确定 | 更新日期: 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;
}
}