我不想用正斜杠分割字符串
我目前的代码如下:
string value = "Ctws Cwts/Rotc/Lts Ctws";
string[] tokens = value.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var token in tokens)
{
Console.Write(token);
}
输出是这样的:“Cwts Cwts”,“Rotc”,“Lts Cwts”
现在我希望我的输出是这样的:“Cwts”,“Rotc”,“Lts”
编辑:
有些答案表明我将使用Distinct()
如果值为:“Something1 Cwts / Rotc / Lts Something2”
输出应该相同:“Cwts”,“Rotc”,“Lts”
答案 0 :(得分:1)
只需使用Distinct
即可 string[] tokens = value
.Split(new char[] { '/', ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Distinct();
另外,不要忘记将空间包含在分隔符中
根据您的编辑,如果您想要显示这些值,则可以执行以下操作:"Cwts", "Rotc", "Lts"
所有输入
var values = new List<string> { "Cwts", "Rotc", "Lts" };
string[] tokens = value
.Split(new char[] { '/', ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Where(t => values.Contains(t))
.Distinct();
答案 1 :(得分:1)
您可以使用多个字符来分割字符串。您可以使用String.Split()函数的重载之一。要删除重复的条目,您可以使用Distinct()功能。
所以这是你的陈述
string[] tokens = value.Split(new char[] { '/',' ' },
StringSplitOptions.RemoveEmptyEntries).Distinct().ToArray();
编辑 :编辑完成后,问题似乎让我感到困惑的是你想要实现的目标。据我所知,您有一个字符串列表,您希望在包含/
和spaces
的单个字符串中找到该字符串。
为此,您可以使用Intersect方法。
List<string> requiredValues = new List<string> { "Cwts", "Rotc", "Lts" };
var tokens = requiredValues.Intersect(value.Split(new char[] { '/', ' ' },
StringSplitOptions.RemoveEmptyEntries));
答案 2 :(得分:1)
string value = "Ctws Cwts/Rotc/Lts Ctws";
var terms = new HashSet<String> { "Ctws", "Rotc", "Lts" };
var tokens =
from s in value.Split(new [] { ' ','/' },
StringSplitOptions.RemoveEmptyEntries)
group s by s into g
where terms.Contans(g.Key)
select g.Key;
这应该处理拆分过滤和删除重复项。
答案 3 :(得分:1)
使用distinct与2 params
var tokens = value
.Split(new char[] { '/', ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Distinct();