繁体   English   中英

用空格和正斜杠分隔字符串,用正斜杠分隔

[英]Split string with space and forward slash by forward slash

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

我当前的代码如下所示:

  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”

只需使用Distinct

  string[] tokens = value
              .Split(new char[] { '/', ' ' }, StringSplitOptions.RemoveEmptyEntries)
              .Distinct();

也不要忘记在分隔符中包含空格

根据您的编辑,如果要"Cwts", "Rotc", "Lts"这些值,则可以执行以下操作:所有输入均使用"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();

您可以使用多个字符来分割字符串。 您可以使用String.Split()函数的重载之一。 要删除重复的条目,可以使用Distinct()函数。

所以这是你的声明

string[] tokens = value.Split(new char[] { '/',' ' },
                  StringSplitOptions.RemoveEmptyEntries).Distinct().ToArray();

编辑 :在您编辑后,这个问题似乎让我不太想知道您想要实现的目标。 据我了解,您可以在包含/spaces的单个字符串中找到要查找的字符串列表。

为此,您可以使用相交方法。

List<string> requiredValues = new List<string> { "Cwts", "Rotc", "Lts" };

var tokens = requiredValues.Intersect(value.Split(new char[] { '/', ' ' }, 
           StringSplitOptions.RemoveEmptyEntries));
 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;

这应注意拆分过滤和删除重复项。

与2个参数一起使用

 var tokens = value
              .Split(new char[] { '/', ' ' }, StringSplitOptions.RemoveEmptyEntries)
              .Distinct();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM