多个字符串中的不同字符
本文关键字:字符 字符串 | 更新日期: 2023-09-27 18:25:01
我试图在列表中的所有字符串中获得一个不同的字符列表(区分大小写)。
我有一个包含3个字符串的列表:
"AABbDDCCRRFF"
"JOJaCK"
"BILLY"
输出应该是这样的(字符的顺序不重要):
ABDCRFJOKaILYb
我知道以下是错误的,但无法解决:
distChars = (from string row in valuesList[c]
select row.Distinct()
).Distinct().ToString();
有人知道如何从每个字符串中返回不同的字符吗。如果这不能在LINQ中完成,那么我对其他选择持开放态度。谢谢
更新:哇,好答案,这么快!按照字母顺序或出现频率排列字符的方法是什么?
您可以这样做:
string[] values = new []{"AABbDDCCRRFF","JOJaCK","BILLY"};
var uniqueChars = new string(values.SelectMany(x => x).Distinct().ToArray());
编辑:
正如@Douglas所建议的,使用string.Concat()
而不是new string()
可能会稍微更有效,即:
var uniqueChars = string.Concat(values.SelectMany(x => x).Distinct());
在代码中,首先从每行中的中选择不同的字符,然后选择不同的字符序列,最后在IEnumerable<T>
上调用ToString
。
我建议您首先从所有行中选择所有字符,对组合序列应用Distinct
过滤器,最后调用string.Concat
来连接生成的字符序列:
var distChars = string.Concat(
(
from row in valuesList[c]
from c in row
select c
).Distinct());
试试这个;
var valuesList = new List<string> {"AABbDDCCRRFF", "JOJaCK", "BILLY"};
var distChars = string.Join("", (from str in valuesList // Select all strings.
from ch in str // Select all chars.
select ch).Distinct()); // Get distinct chars.
您想要的是不同的字符而不是字符串。
var strings = new string[] { "AABbDDCCRRFF", "JOJaCK", "BILLY" };
var q = (from str in strings
from c in str
select c).Distinct().ToList();
这里的问题是您有一个集合集合。请先尝试连接字符串,然后再选择不同的字符。