[英]C# order string
如果按字母順序排序,如何確定哪個字符串在另一個字符串之前
例子:
is "add" before "ask"? true
is "aaaabba" before "aaac"? true
is "xeon" before "alphabet"? false
.NET中有什么可以做到的嗎? 或者有人知道這樣做的好方法嗎? 提前致謝。 我正在使用C#,但另一種語言可以用於示例,甚至是偽代碼,或者一個想法,謝謝。
比較文化意識字符串的陽離子!
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
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();
}
使用StringComparer
類http://msdn.microsoft.com/en-us/library/system.stringcomparer.aspx
你可以使用
int result = String.Compare(stringa, stringb);
如果結果> 0,那么stringa將在stringb之前,<0 stringb在stringa之前,0是在它們相同時。
string.Compare是您正在尋找的功能。
如果結果大於0,則第一個參數大於第二個參數。 如果它低於0那么它就是第二個。 如果函數返回0,則兩個參數都相等。
如果您正在使用某個容器,那么您可以檢查索引值以檢查它是否為索引之前或不是這樣:
if( Array.IndexOf(strArray, "C") < Array.IndexOf(strArray, "C") ) return true;
如您所知,它是按alphabet
那么您可以使用String.Compare方法(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
。 有關更多信息,請參閱.NET Framework中使用字符串的最佳實踐。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.