2015-10-03 52 views
0

我想查找一個字符串中有不同字符,而不是另一個字符串。假設firstString包含ABC並且secondString包含BC 現在輸出op1應該包含「在firstString中明顯存在但不在secondString中的字符」,即A和op2應該包含「字符明顯存在於secondString中但不存在於firstString中」即在這種情況下爲空。 如果firstString是「SBG」 和secondString是「班加羅爾」 OP1應該是「S」 OP2應該是「ANLORE」如何找到一個字符串中存在的字符,而不是另一個字符在C#中?

+1

那麼,你有什麼嘗試編碼? –

回答

4

這可以容易地與在所述的LINQ方法Enumerable.Except()完成由於String也實現IEnumerable<char>

var str1 = "ABC"; 
    var str2 = "BC"; 

    var str3 = new string(str1.Except(str2).ToArray()); 
    var str4 = new string(str2.Except(str1).ToArray()); 


    var str5 = "SBG"; 
    var str6 = "BANGALORE"; 

    var str7 = new string(str5.Except(str6).ToArray()); 
    var str8 = new string(str6.Except(str5).ToArray()); 
+5

'String.Join'是不必要的,字符串有一個構造函數,它需要'char []'參數。 –

+1

是的,我認爲它有它,但我不確定,也沒有編譯器在手來測試它。更新了代碼。 –

2

既然你想要的不同字符,你可以使用Except例如

using System.Linq; 

"BANGALORE".Except("SBG") 
1

添加到建議卡爾 - 約翰·舍格倫已使用Enumerable.Except給,你可以很容易包裝成一個擴展方法這一點。

public static class StringExtensions { 
    public static string DistinctFrom(this string one, string two) { 
     return new string(one.Except(two).ToArray()); 
    } 
} 

//Usage. Given 'ABC' and 'BC' results 'A' 
var distinctString = str1.DistrinctFrom(str2); 

如果您經常使用它,非常方便,並且可以在需要時在一個位置更改邏輯。

相關問題