Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符串中删除重复值_C#_String_C# 4.0 - Fatal编程技术网

C# 从字符串中删除重复值

C# 从字符串中删除重复值,c#,string,c#-4.0,C#,String,C# 4.0,我有两条线 string s1 = "Apple, Mango, Cherry"; string s2 = "Apple, Mango, Cherry, Pear"; 现在我想比较两个字符串并删除重复的值和 结果应该是 string s3 = "Pear" 怎么做 我试过: List<string> list1 = new List<string> {CommonJurisdictions }; List<string> list2 = new List&

我有两条线

string s1 = "Apple, Mango, Cherry";
string s2 = "Apple, Mango, Cherry, Pear";
现在我想比较两个字符串并删除重复的值和 结果应该是

string s3 = "Pear"
怎么做

我试过:

List<string> list1 = new List<string> {CommonJurisdictions };
List<string> list2 = new List<string> { Jurisdiction };
List<string> ulist = list2.Except(list1).ToList();
List list1=新列表{commonjudictions};
List list2=新列表{辖区};
List ulist=list2.Except(list1.ToList();

但是它没有给出预期的结果。

如果它们是字符串列表,则使用
,除了

List<string> s1 = new List<string> {"Apple", "Mango","Cherry"};
List<string> s2 = new List<string> {"Apple", "Mango", "Cherry", "Pear"};
var result = s2.Except(s1); //Pear

使用
String.Split
Enumerable.Except
Concat
String.Join

string s1 = "Apple, Mango, Cherry";
string s2 = "Apple, Mango, Cherry, Pear";

var s1Token = s1.Split(',').Select(t => t.Trim()).ToArray();
var s2Token = s2.Split(',').Select(t => t.Trim()).ToArray();
var inSecondNotFirst = s1Token.Except(s2Token);
var inFirstNotSecond = s2Token.Except(s1Token);
string s3 = String.Join(", ", inSecondNotFirst.Concat(inFirstNotSecond));
但是更有效的(
O(n)
)是使用
HashSet
,它是:

var s1Token=newhashset(s1.Split(',).Select(t=>t.Trim());
var s2Token=newhashset(s2.Split(',).Select(t=>t.Trim());
s1Token.SymmetricExceptWith(s2Token);
字符串s3=string.Join(“,”,s1Token);
您可以尝试以下方法:

var array1 = s1.Split(',');
var array2 = s2.Split(',');


var s= array1.Except(array2).Concat(array2.Except(array1));
这在阵列和另一个阵列(基于OP的示例)中都是独一无二的:

var list1=新列表{“苹果”、“芒果”、“樱桃”、“草莓”};
var list2=新列表{“苹果”、“芒果”、“樱桃”、“梨”};
var ulist=list1.Except(list2).Union(list2.Except(list1)).ToList();

查看HashSet类的SymmetricExceptWith方法

var separator=“,”.ToCharArray();
字符串s1=“苹果、芒果、樱桃”;
string s2=“苹果、芒果、樱桃、梨”;
字符串[]a1=s1。拆分(分隔符);
字符串[]a2=s2.拆分(分隔符);
var差异=新哈希集(a1);
与(a2)不同的对称性异常;
您可以轻松地重构此文件以删除其他分配。

string s1=“Apple,Mango,Cherry”;
string s1 = "Apple, Mango, Cherry";

string s2 = "Apple, Mango, Cherry, Pear";

List<string> list1 = s1.Split(',').Select(s => s.Trim()).ToList();
List<string> list2 = s2.Split(',').Select(s => s.Trim()).ToList();

var res = list2.Count > list1.Count ? list2.Where(s => !list1.Contains(s)).ToList() :
                                      list1.Where(s => !list2.Contains(s)).ToList();
string s2=“苹果、芒果、樱桃、梨”; List list1=s1.Split(',')。选择(s=>s.Trim()).ToList(); List list2=s2.Split(',')。选择(s=>s.Trim()).ToList(); var res=list2.Count>list1.Count?list2.Where(s=>!list1.Contains(s)).ToList(): list1.Where(s=>!list2.Contains(s)).ToList();
这些不是字符串,而是无法编译的内容。提供真实的代码并展示您的尝试。您是否尝试过任何方法来解决您的问题?请创建一个您的第一个和第二个代码示例甚至不匹配的示例。一个用于
字符串
,另一个用于
列表
。哎呀,8,6k,还有一个未加密的昵称\您可以使用
Concat
,因为
Except
已经删除了重复项。Concat只是简单地追加,而Union跳过重复项,所以这需要更多的工作。@TimSchmelter很好的提示,谢谢!
string s1 = "Apple, Mango, Cherry";
string s2 = "Apple, Mango, Cherry, Pear";

var a1 = s1.Split(',');
var a2 = s2.Split(',');

var result = string.Join(", ", a2.Except(a1));
var array1 = s1.Split(',');
var array2 = s2.Split(',');


var s= array1.Except(array2).Concat(array2.Except(array1));
var list1 = new List<string> { "Apple", "Mango", "Cherry", "Strawberry" };
var list2 = new List<string> { "Apple", "Mango", "Cherry", "Pear" }; 

var ulist = list1.Except(list2).Union(list2.Except(list1)).ToList();
var seperator = ", ".ToCharArray();

string s1 = "Apple, Mango, Cherry";
string s2 = "Apple, Mango, Cherry, Pear";

string[] a1 = s1.Split(seperator);
string[] a2 = s2.Split(seperator);

var difference = new HashSet<string>(a1);
difference.SymmetricExceptWith(a2);
string s1 = "Apple, Mango, Cherry";

string s2 = "Apple, Mango, Cherry, Pear";

List<string> list1 = s1.Split(',').Select(s => s.Trim()).ToList();
List<string> list2 = s2.Split(',').Select(s => s.Trim()).ToList();

var res = list2.Count > list1.Count ? list2.Where(s => !list1.Contains(s)).ToList() :
                                      list1.Where(s => !list2.Contains(s)).ToList();