我正在尝试验证string
值为,
并且sting
分隔的数据。我想要的是验证 data1 = "value1,value2,value3,va-lu4,value 6,value1";//should fail
data2 = "value1,value2,value3,va-lu4,value 6";//should pass
中不应该重复相同的值。
实施例。我的价值是。
data1
在上面的情况中,value1
会失败,因为它包含data2
两次。并且 ^[-\w\s]+(?:,[-\w\s]*)*$
应该传递或匹配,因为它不包含任何重复值。
这是我匹配每个值但不确定如何检查重复的原因。
Regex
这将匹配分隔符之间的值,但不确定如何检查是否存在重复值。任何帮助都会很棒 注意 - 我知道我可以使用sting函数和循环来执行此操作我正在学习{{1}}并想尝试使用正则表达式。如果有混淆,请随意评论这是我在Stack上的第一个问题。
答案 0 :(得分:1)
答案 1 :(得分:1)
正则表达式在很多情况下都很有用。但是要在字符串中检查重复项可以实现更容易(在C#中):
bool HasDuplicates(string str)
{
var list1=str.Split(',').Select(s=>s.Trim());
var list2=list1.Distinct();
return (list1.Count()>list2.Count());
}
工作原理:该函数将字符串转换为列表,修剪元素,然后从中创建第二个不同的列表。最后,它比较两个列表中的元素数量:如果不同列表的元素少于原始列表,则表示重复,并且函数返回true,否则返回false。
示例:强>
var result1=HasDuplicates("Test1, Test1, Test2");
var result2=HasDuplicates("Test1, Test2, Test3");
变量result1
包含true
,变量result2
包含false
。
您可以在DotNetFiddle中试用代码:https://dotnetfiddle.net/0pRURH
答案 2 :(得分:1)