我有一个需要排序的分隔字符串。首先我需要检查 'Francais' 是否在字符串中,如果是,它首先出现,然后是 'Anglais'(如果存在)。在那之后,其他一切都是按字母顺序排列的。谁能帮我?这是我到目前为止所拥有的,没有排序
private string SortFrench(string langs)
{
string _frenchLangs = String.Empty;
string retval = String.Empty;
_frenchLangs = string.Join(" ; ",langs.Split(';').Select(s => s.Trim()).ToArray());
if (_frenchLangs.Contains("Francais"))
retval += "Francais";
if (_frenchLangs.Contains("Anglais"))
{
if (retval.Length > 0)
retval += " ; ";
retval += "Anglais";
}
//sort the rest
return retval;
}
最佳答案
有人喜欢我的评论,所以我想我会继续将其转换为您的代码:
private string SortFrench(string langs)
{
var sorted = langs.Split(';')
.Select(s => s.Trim())
.OrderByDescending( s => s == "Francais" )
.ThenByDescending( s => s == "Anglais" )
.ThenBy ( s => s )
.ToArray();
return string.Join(" ; ",sorted);
}
我的语法可能略有偏差,因为我已经在 Unix 世界工作了一段时间并且最近没有使用太多 LINQ,但希望它能有所帮助。
关于c# - 在 C# 中对字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16567268/