вы можете использовать этот способ расширения. Имейте в виду, что если что-то не так с вашей входной строкой, тогда это вызовет исключение, вы можете добавить к нему обработку исключений, если хотите. (Например, с помощью 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? – Sajeetharan
@ Sajeetharan довольно плохая формулировка и грамматика, но я думаю, что OP хочет проверить, является ли какое-либо из значений ** с запятыми ** номером 1, а не проверяет, является ли какой-либо из ** символов ** символом ''1 «'. –
@OP: это тривиально. Разделите строку на запятую и примените 'Contains' к результирующему массиву. –