检查一个数字字符串是否在if语句中对C#进行了排序

时间:2017-06-06 22:16:14

标签: c# if-statement math numbers

我试图弄清楚如何在C#中编写一个基本上这样做的if语句

string myString = "1234";  
if( myString is sorted)
    {
        //Do some stuff
    }
else
    {
       // Do some other stuff
    }

3 个答案:

答案 0 :(得分:3)

检查的一种方法是将字符串视为chars的集合,并使用System.Linq扩展名OrderBy()。请注意,如果字符不是整数,则下面的代码将抛出异常:

var input = "1234";
var orderedInput = string.Join("", input.OrderBy(i => int.Parse(i.ToString())));

if (input == orderedInput)
{
    Console.WriteLine("it's sorted.");
}
else
{
    Console.WriteLine("it's not sorted");
}

如果要允许非数字字符,可以使用字符串排序(按数字排序,然后按字母排序),您可以使用:

var orderedInput = string.Join("", input.OrderBy(i => i.ToString()));

答案 1 :(得分:3)

您可以避免解析,排序和创建新的字符串 - 拉链字符串,其自身移位一个字符,然后只检查按升序排列的字符:

var ordered = myString.Zip(myString.Skip(1), (a, b) => a <= b).All(x => x);

答案 2 :(得分:0)

我试图简化&#39; Rufus L&#39;回答帮助Ian Shirley。我试图发挥作用。我知道那种可能与文化问题有关,但我想解释一下。

string myString = "12343";
var sortedChar = myString.ToCharArray().ToList(); //we convert string to character

            sortedChar.Sort(); //this two lines is equivalent to OrderBy

            string sortedString =string.Join("",sortedChar);//this code concat the character or string together with specified string(here "")
            if (sortedString == myString)
            {
                Console.WriteLine("it's sorted.");

            }
            else
            {
                Console.WriteLine("it's not sorted.");

            }