2015-01-15 23 views
-1

陣列(myArray)具有以下值的最小值:選擇從串開頭的號碼

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

我想選擇的值,例如,3第1位的基礎上的最小值, 4,5,6,7, 即在我的情況下,最小值是"3 dage¶Voksen¶1680 CZK"。但是,這些數字可以是任何自然數{0, 1, 2, 3, 4, 5, ...}。所以我想要一個解決方案來選擇數值最小的值。

如何實現?

+2

你在哪裏試圖解決這個問題? – Reniuz

+1

你有什麼嘗試? – user1666620

+0

你應該發佈你試圖解決問題的東西。 –

回答

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

你可以試試這個:

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

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

你的解決方案是不會用'「11113dage¶Voksen¶1680CZK〜」' –

+0

是的你是對的。它不是完美的解決方案,但這是人們可以接近的方式。在考慮數字的地方,可以用空格等來分隔字符串 – gRaWEty

+0

您的解決方案是正確的。如果他的整數總是一個數字,我給他一個更簡單的解決方案。 – gRaWEty