Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_Duplicates_Character - Fatal编程技术网

C# 如何从字符串中删除重复项?

C# 如何从字符串中删除重复项?,c#,string,duplicates,character,C#,String,Duplicates,Character,代码应该把所有字母放在小写字母中,并将j改为i,它就是这样做的。但我想把所有重复的信都拿出来 示例输入字符串=jjjaaaMMM预期输出字符串=jam 实际发生的情况real output string=m请帮助我,我不确定我遗漏了什么 string key = Secret.Text; var keyLow = key.ToLower(); var newKey = keyLow.Replace("j", "i");

代码应该把所有字母放在小写字母中,并将j改为i,它就是这样做的。但我想把所有重复的信都拿出来

示例输入字符串=jjjaaaMMM预期输出字符串=jam

实际发生的情况real output string=m请帮助我,我不确定我遗漏了什么

                    string key = Secret.Text;
        var keyLow = key.ToLower();
        var newKey = keyLow.Replace("j", "i");
        var set = new HashSet<char>(newKey);
        foreach (char c in set)
        {
            Secret.Text = Char.ToString(c);
        }
string key=Secret.Text;
var keyLow=key.ToLower();
var newKey=keyLow.替换(“j”、“i”);
var set=新HashSet(newKey);
foreach(集合中的字符c)
{
Secret.Text=Char.ToString(c);
}

您的问题完全是

Secret.Text = Char.ToString(c);
它需要是
+=

Secret.Text += Char.ToString(c);
您正在用下一个值覆盖每个值

不过,您可以使用linq

或者从评论中可能更有效


由于您有一个
字符序列
,因此 调用
string
构造函数而不是
Concat


其他资源

连接字符串或字符串的一个或多个实例 对象的一个或多个实例的值的表示

返回序列中不同的元素


您可以使用Linq方法:

var text = key.ToLower().Distinct().ToArray();  

不要忘记使用系统添加
。Linq

其他人可以直接回答问题。我会提供一个替代方案。与字符串操作一样,这有一个解决方案

var output = Regex.Replace(input, @"(.)\1*", "$1");

您对
jjjaaaMMMjjj
的预期行为是什么
jaM
jaMj
?您可以用“maj”吗?据我所知,由于散列集不能保证顺序……如果您对所需的输出更加具体,我们可以用它再次打开这个问题,
var text
将是
char[]
而不是
string
是的。字符串文本=新字符串(key.ToLower().Distinct().ToArray());这更合适,因为您有一个
char
序列,调用字符串构造函数可能比
Concat
@BenVoigt更有效。是的,很好,谢谢更新和属性化
var text = key.ToLower().Distinct().ToArray();  
var output = Regex.Replace(input, @"(.)\1*", "$1");