C# 如何从字符串中删除重复项?
代码应该把所有字母放在小写字母中,并将j改为i,它就是这样做的。但我想把所有重复的信都拿出来 示例输入字符串=jjjaaaMMM预期输出字符串=jam 实际发生的情况real output string=m请帮助我,我不确定我遗漏了什么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");
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");