我试图弄清楚如何在C#中编写一个基本上这样做的if语句
string myString = "1234";
if( myString is sorted)
{
//Do some stuff
}
else
{
// Do some other stuff
}
答案 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.");
}