2011-01-31 65 views
1

HI,循环收集找到最小

我有字符串的集合 例如 “测试(9)” “测试(7)” “测试(5)” “测试(3)”

我想循环使用foreach循环来迭代并找到最低数字我有一个正则表达式来提取每个字符串中的数字...我需要遍历所有项目(它们的格式与我一样上面的例子)并找到最低的数字......?

foreach (SPListItem item in items) 

{ 

string item = (String)item["Title"]; 

string itemNumberString = Regex.Match(UniqueCounteryparty, @"\d+").Value; 


} 
+2

你的问题的存在... – 2011-01-31 14:04:52

+0

你有没有考虑使用类来分别存储数量或者是它不可能在您的情况? – Tx3 2011-01-31 14:06:28

回答

3

我下面初始化使用数组初始化语法进行演示,因为我假设你的变量“测试”已经填入你需要的字符串的集合。

string[] tests = new string[] { "test(1)", "test(2)", "test(3)" }; 
    int minimum = int.MaxValue; 

    foreach(string test in tests) 
    { 
    int num = ExtractNumber(test); 
    if (num < minimum) 
     minimum = num; 
    } 

    //now you have minimum that hold the minimum; 

“ExtractNumber” 是你的函数从字符串

5
int minValue = int.MaxValue; 

foreach(string s in strings) 
    minValue = Math.Min(minValue, ExtractNumberMethod(s)); 
+0

是啊...这就是要求... – 2011-01-31 14:17:22

0

你可以简单地依靠基础类库方法提取数:

的样本来说明这两种方法:

using System; 
using System.Text.RegularExpressions; 
using System.Collections.Generic; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 

     private static void Method2(string[] strings) 
     { 
      int[] ints = new int[strings.Length]; 

      for (int i = 0; i < strings.Length; i++) 
      { 
       ints[i] = Extract(strings[i]); 
      } 

      Array.Sort<int>(ints); 

      foreach (int i in ints) 
      { 
       Console.WriteLine(i); 
      } 

      Console.WriteLine("The smallest is {0}", ints[0]); 
     } 

     private static void Method1(string[] strings) 
     { 
      List<int> result = new List<int>(); 
      foreach (string s in strings) 
      { 
       int value = Extract(s); 
       result.Add(value); 
      } 
      result.Sort(); 

      foreach (int i in result) 
      { 
       Console.WriteLine(i); 
      } 
      Console.WriteLine("The smallest is {0}", result[0]); 
     } 
     static void Main(string[] args) 
     { 
      string[] strings = new string[6]; 

      strings[0] = "test (9)"; 
      strings[1] = "test (4)"; 
      strings[2] = "test (7)"; 
      strings[3] = "test (1)"; 
      strings[4] = "test (2)"; 
      strings[5] = "test (8)"; 

      Console.WriteLine("\nMethod1 :"); 
      Method1(strings); 

      Console.WriteLine("\nMethod2 :"); 

      Method2(strings); 
      Console.ReadLine(); 
     } 

     private static int Extract(string s) 
     { 
      // simply extract the digits 
      return Convert.ToInt32(Regex.Match(s, @"\d+").Value); 
     } 
    } 
}