有没有更好的方法从C#中的大写字母创建首字母缩略词?

Rud*_*dis 5 c# regex acronym

在C#中用大写字母创建首字母缩略词的最佳方法是什么?

示例:

Alfa_BetaGameDelta_Epsilon

预期结果:

ABGDE

我的解决方案有效,但并不好

        var classNameAbbreviationRegex = new Regex("[A-Z]+", RegexOptions.Compiled);
        var matches = classNameAbbreviationRegex.Matches(enumTypeName);
        var letters = new string[matches.Count];

        for (var i = 0; i < matches.Count; i++)
        {
            letters[i] = matches[i].Value;
        }

        var abbreviation = string.Join(string.Empty, letters);
Run Code Online (Sandbox Code Playgroud)

Say*_*yse 5

string.Join("", s.Where(x => char.IsUpper(x))
Run Code Online (Sandbox Code Playgroud)


Dan*_*rth 5

string.Join("", s.Where(char.IsUpper));
Run Code Online (Sandbox Code Playgroud)

  • 但我认为在这种情况下使用`Concat`比`Join`更直观. (2认同)

Tyl*_*ler 5

string test = "Alfa_BetaGameDelta_Epsilon";
string result = string.Concat(test.Where(char.IsUpper));
Run Code Online (Sandbox Code Playgroud)