c# - 在 C# 中对字符串进行排序

标签 c# sorting

我有一个需要排序的分隔字符串。首先我需要检查 '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/

相关文章:

c# - WinForms 中的 WPF 控件

java - 在线性时间和常数空间的交替位置对具有两个排序序列的数组进行排序

c++ - 使用 bool 谓词函数在 O(N) 时间内对 vector 进行排序

python - python 内置函数 min() 和 sorted() 中的参数

c# - 如何根据 T 的属性对 List<T> 进行排序?

c++ - 如何迭代一个int数组?

c# - HandleErrorAttribute 的派生类是不是捕获异常?

c# - ConcurrentDictionary 的 GetOrAdd 不是原子的。除了锁定还有其他选择吗?

c# - 连同数据一起序列化 XmlDoc 注释

c# - 使用字典的 Linq 奇怪行为