正则表达式在此集中找到重复值

时间:2017-05-07 20:42:46

标签: c# regex

我有一个字符串值列表,如下所示:

GREEN,BLUE,BLUE
BLUE,BLUE,GREEN
GREEN,RED,RED
RED,BLUE,BLUE
BLUE,RED,RED
GREEN,BLUE,BLUE
RED,GREEN,BLUE

我将使用foreach遍历每一行并找到唯一值。

我需要一个返回true的正则表达式,如果有颜色重复(RED,GREEN,RED),则没有颜色重复(RED,GREEN,BLUE)和false。

正则表达式是什么样的?

1 个答案:

答案 0 :(得分:3)

您可以尝试使用 Linq 而不是正则表达式

C:\Users\myUser\wekafiles

测试:

  using System.Linq;

  ...  

  string source = "BLUE,BLUE,GREEN";

  // do we have three distinct items?
  bool allDistinct = source.Split(',').Distinct().Count() >= 3; 

结果:

List<string> list = new List<string>() {
  "GREEN,BLUE,BLUE",
  "BLUE,BLUE,GREEN",
  "GREEN,RED,RED",
  "RED,BLUE,BLUE",
  "BLUE,RED,RED",
  "GREEN,BLUE,BLUE",
  "RED,GREEN,BLUE",
};

var result = list
  .Select(source => $"{source,-15} {source.Split(',').Distinct().Count() >= 3}");

Console.Write(string.Join(Environment.NewLine, result));

编辑: Linq 可以帮助解决一般情况:

GREEN,BLUE,BLUE False
BLUE,BLUE,GREEN False
GREEN,RED,RED   False
RED,BLUE,BLUE   False
BLUE,RED,RED    False
GREEN,BLUE,BLUE False
RED,GREEN,BLUE  True