好吧,我很难接受一些非常基本的东西。我有一个包含逗号分隔值的字符串。基本上它是这样的:
public string shapes = circle, circle, square;
最终,此示例将在bool中返回false
值,因为所有3个值都不匹配。
我正在寻找比较一个字符串中的值的最简单方法。到目前为止,我只看到比较2个或更多字符串的方法。我希望我能做到这一点,而不必诉诸于填充列表或数组。
答案 0 :(得分:1)
static bool ShapeCheck(string shapeString)
{
var shapes = shapeString.Split(new[] { ',' , ' ' }, StringSplitOptions.RemoveEmptyEntries);
return shapes.Distinct().Count() == 1;
}
你会这样称呼:
Console.WriteLine("circle, circle, square = {0}", ShapeCheck("circle, circle, square"));
Console.WriteLine("circle, circle, circle = {0}", ShapeCheck("circle, circle, circle"));
第一个是假的,第二个是真的。
答案 1 :(得分:0)
您需要使用逗号作为分隔符的Split
函数。
然后假设有前导空格或尾随空格(如您的示例所示),您需要Trim
现在您已经从字符串中获得了一组填充的值。
然后您可以使用Linq并执行Distinct
并检查长度,如果长度发生了变化,则会有重复。
这假设您不想知道重复的内容。
答案 2 :(得分:0)
您可以Distinct()
进行string[]
来电。
static void Main(string[] args)
{
var str = "foo,bar,test";
Console.WriteLine(DoValuesMatch(str));
Console.ReadLine();
}
private static bool DoValuesMatch(string str)
{
var strArr = str.Split(new[] { ',' });
return strArr.Distinct().Count() == 1;
}
答案 3 :(得分:0)
由于已经采取了所有很酷的标准答案......旧学校的方法:
public string shapes = "circle, circle, square";
private void button1_Click(object sender, EventArgs e)
{
shapes = shapes + ",";
int comma = shapes.IndexOf(",");
string value = shapes.Substring(0, comma).Trim();
shapes = shapes.Replace(value, "").Trim(", ".ToCharArray());
bool AllTheSame = (shapes.Length == 0);
if (AllTheSame)
Console.WriteLine("They are all: " + value);
else
Console.WriteLine("They are NOT all the same.");
}