您可以嘗試使用的LINQ而不是正則表達式:
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));
結果:
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
編輯:的LINQ可以幫助在廣義情況:
bool allDistinct = !source
.Split(',')
.GroupBy(item => item, (k, s) => s.Skip(1).Any())
.Any(item => item);
正則表達式似乎不喜歡這份工作的最佳工具......我會比較'Count'列表和不同列表之間。 –
@DeanFenster我從未使用過不同的列表。你能否詳細說明一下? – Json
你真的不想使用'if(!Regex.IsMatch(s,@「\ b(\ w +)\ b(?=。* \ b \ 1 \ b)」)){return true;}' –