2017-06-05 218 views

回答

2

如果你坚持正则表达式

string source = @"Electronics and Communication Engineering"; 

string result = string.Concat(Regex 
    .Matches(source, "[A-Z]") 
    .OfType<Match>() 
    .Select(match => match.Value)); 

的LINQ是(短)替代:

string result = string.Concat(source.Where(c => c >= 'A' && c <= 'Z')); 
+0

哪个更有效?正则表达式或Linq? –

+1

@Christlin Joseph:可能,* Linq *(在上下文中),因为它是直接的 –

1

使用LINQ:

string text = "Electronics and Communication Engineering"; 
var capitalLetters = text.Where(c => char.IsUpper(c)).ToArray(); 
1

Linq的解决方案Example is here

扩展方法Where将帮助您获得给定字符串的大写字母。您可以使用String.JoinString.Concat(如DmitryBychenko建议的那样更好),以获得字符串的最终输出。经过下面的代码片段

string inputStr = "Electronics and Communication Engineering"; 
string outputStr=String.Concat(inputStr.Where(x=>Char.IsUpper(x))); 
Console.WriteLine(outputStr); 
+1

'string.Concat(value)'是String.Join的缩写版本' –

+0

@DmitryBychenko:Waw真的很不错感谢您的建议 –

0
var s = "Electronics and Communication Engineering"; 

result = string.Concat(s.Select(c => char.IsUpper(c) ? c.ToString() : "")) 
      .TrimStart(); 
相关问题