Select 以数字开头的字符串中的最小值

Select the minimum value from strings starting with a number

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

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

我想 select 基于值中第一个数字的最小值,例如 3, 4, 5, 6, 7, 即,在我的例子中,最小值是 "3 dage¶Voksen¶1680 CZK"。但是,这些数可以是任意自然数{0, 1, 2, 3, 4, 5, ...}。所以我想要一个解决方案 select 具有最小数字的值。

如何实现?

你可以试试这个:

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);

结果:

我用过这个:

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;
        }

}
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;
    }
}

试试这个

 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];
    }

 }