如何确定哪个字符串在另一个字符串之前按字母顺序排列?C#顺序字符串
例子:
is "add" before "ask"? true
is "aaaabba" before "aaac"? true
is "xeon" before "alphabet"? false
有什么在.NET中可以做到这一点?或者有人知道一个好的方法来做到这一点?提前致谢。我正在使用C#,但另一种语言对于示例甚至伪代码或一个想法都很好,谢谢。
如何确定哪个字符串在另一个字符串之前按字母顺序排列?C#顺序字符串
例子:
is "add" before "ask"? true
is "aaaabba" before "aaac"? true
is "xeon" before "alphabet"? false
有什么在.NET中可以做到这一点?或者有人知道一个好的方法来做到这一点?提前致谢。我正在使用C#,但另一种语言对于示例甚至伪代码或一个想法都很好,谢谢。
使用StringComparer
类 http://msdn.microsoft.com/en-us/library/system.stringcomparer.aspx
static void Main(string[] args)
{
Console.WriteLine(
"is 'add' before 'ask'? {0}",
string.Compare("add", "ask") < 0
);
Console.WriteLine(
"is 'aaaabba' before 'aaac'? {0}",
string.Compare("aaaabba", "aaac") < 0
);
Console.WriteLine(
"is 'xeon' before 'alphabet'? {0}",
string.Compare("xeon", "alphabet") < 0
);
Console.ReadLine();
}
你可以使用
int result = String.Compare(stringa, stringb);
如果结果> 0,则stringa会stringb之前,< 0 stringb stringa和0之前,当他们是相同的。
string.Compare是你正在寻找的函数。
如果结果大于0,则第一个参数大于第二个参数。如果它低于0,那么它是第二个。如果函数返回0,那么两个参数都是相等的。
阳离子在比较文化感知字符串!
String s1 = "Strasse";
String s2 = "Straße";
var res = String.Compare(s1, s2, StringComparison.Ordinal) == 0; // returns false
CultureInfo ci = new CultureInfo("de-DE");
eq = String.Compare(s1, s2, true, ci) == 0; // returns true
如果您使用的是一些容器,那么你可以检查索引值前检查,这是它的索引或不喜欢这样的:
if(Array.IndexOf(strArray, "C") < Array.IndexOf(strArray, "C")) return true;
正如你知道它是根据alphabet
那么你就可以有序使用String.Compare Method (String, String)
retun string.Compare(string1, string2) < 0 ? true : false
比较使用current culture
以获得特定文化的信息,例如casing rules and the alphabetic order of individual characters
。例如,文化可以指定某些字符组合被视为单个字符,或者以特定方式比较大写和小写字符,或者字符的排序顺序取决于前后的字符。
比较字符串时,应该调用Compare方法,其中requires that you explicitly specify the type of string comparison that the method uses
。有关详细信息,请参阅串Best Practices for Using Strings in the .NET Framework.
的compareTo应retuen一个int其中当小于,等于,大于显示当前字符串是bwfore,相同或与它进行比较 – frictionlesspulley
哪个容器/收集后的字符串你正在使用的类型。集合有IndexOf语句来检查索引..这将有助于识别.. –