2017-06-05 215 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(); 
相關問題