找到具体的数字

时间:2017-02-21 06:55:47

标签: c# .net math

我需要在数字中找到特定的数字。例如,我有以下数字

  

156,14,28,34

我需要找出有多少数字有数字4

5 个答案:

答案 0 :(得分: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 :(得分: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给你的

答案 2 :(得分:1)

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

输出:

  

14 34

答案 3 :(得分: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();

打印结果

  

14 34

您的具体用例将决定哪种方式最适合您

答案 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);
  }
}