从以数字开头的字符串中选择最小值

时间:2015-01-15 09:45:41

标签: c# asp.net

具有以下值的数组(myArray):

3 dage¶Voksen¶1680 CZK~
4 dage¶Voksen¶2130 CZK~
5 dage¶Voksen¶2400 CZK~
6 dage¶Voksen¶2640 CZK~

我想根据值中的第一个数字选择最小值,例如3,4,5,6,7, 即,在我的情况下,最小值是"3 dage¶Voksen¶1680 CZK"。但是,这些数字可以是任何自然数{0, 1, 2, 3, 4, 5, ...}。所以我想要一个解决方案来选择数字最小的值。

如何实现?

3 个答案:

答案 0 :(得分:2)

你可以试试这个:

string []  myArray = new string[]{

    "3 dage¶Voksen¶1680 CZK~",
    "4 dage¶Voksen¶2130 CZK~",
    "5 dage¶Voksen¶2400 CZK~",
    "1 dage¶Voksen¶1680 CZK~",
    "6 dage¶Voksen¶2640 CZK~"
};


var t= myArray.ToList();
t.Sort((a, b) => Convert.ToInt32(a.GetByRegexMatch(@"^\d+"))-Convert.ToInt32(b.GetByRegexMatch(@"^\d+"))) ;
Console.WriteLine (t);

结果:

enter image description here

我用过这个:

public static class EXT
{
   public static string GetByRegexMatch(this string st, string RegexPattern)
        {
            Regex txt = new Regex( RegexPattern , RegexOptions.IgnorePatternWhitespace);
            Match m = txt.Match(st);
            return m.Groups[0].Value;
        }

}

答案 1 :(得分:1)

试试这个

 int small=Convert.ToInt32(MyArray[0].SubString(0,1));
 string result = MyArray[0];
 for(int i=0; i < MyArray.Length; i++)
 {
  if(Convert.ToInt32(MyArray[i].SubString(0,1))<small)
    {
      result=MyArray[i];
    }

 }

答案 2 :(得分:0)

string []  arr = new string[]{

    "3 dage¶Voksen¶1680 CZK~",
    "4 dage¶Voksen¶2130 CZK~",
    "5 dage¶Voksen¶2400 CZK~",
    "1 dage¶Voksen¶1680 CZK~",
    "6 dage¶Voksen¶2640 CZK~"
};
int number;
int min;
min=int.Parse(new string(arr[0].Where(char.IsDigit).ToArray()));
for(int i=1;i<arr.Length;i++)
   {
        number = int.Parse(new string(arr[i].Where(char.IsDigit).ToArray()));
        if(number<min){
             min = number;
    }
}