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];
}
}
具有以下值的数组 (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];
}
}