2017-02-21 56 views

回答

1

你可以用这个一试:

List<int> inputNumbers = new List<int>(){156, 14, 28,34}; 
int givenNumber = 4; 
var numbers = inputNumbers.Where(x=> 
           x.ToString().Contains(givenNumber.ToString()) 
           ).ToList(); 

输出将被1434,这里是一个working Example

1
var lst = new[] {156, 14, 28,34}; 
var contains4 = lst.Where(c=>c.ToString().Contains("4")); 

输出:

0

试试这个

int[] a={156, 14, 28,34}; 
int count = 0; 
foreach (int t in a) 
{ 
    if (t.ToString().Contains('4') == true) 
    { 
    Console.WriteLine(t); 
    } 
} 
2

所有你需要的是一个简单的的Linq

string source = "156, 14, 28,34"; 

// 2 since there're two numbers - 14, 34 which contain 4 
int result = source 
    .Split(',') 
    .Count(number => number.Contains('4')); 

如果你给一个数组int[]

int[] source = new[] {156, 14, 28, 34}; 

// 2 since there're two numbers - 14, 34 which contain 4 
int result = source 
    .Count(number => number.ToString().Contains('4')); 
1

字符串是缓慢的。

如果number包含digit,此方法将返回true。

private static bool ContainsDigit(int number, int digit) 
{ 
    if (number == 0 && digit == 0) 
    { 
     return true; 
    } 

    for (var value = number; value > 0; value /= 10) 
    { 
     if (value % 10 == digit) 
     { 
      return true; 
     } 
    } 

    return false; 
} 

这样使用

var values = new []{156, 14, 28, 34, 0}; 

foreach (var value in values) 
{ 
    if (ContainsDigit(value, 4)) 
    { 
     Console.Write($"{value} "); 
    } 
} 

Console.WriteLine(); 

打印出结果

您具体的使用情况,将决定哪个最适合你

相关问题