用空格分割字符串,用正斜杠分割正斜杠

时间:2014-02-09 10:46:35

标签: c#

我不想用正斜杠分割字符串

我目前的代码如下:

  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”

4 个答案:

答案 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();