确定字符串中的所有值是否相同

时间:2015-01-14 05:44:56

标签: c# string csv compare

好吧,我很难接受一些非常基本的东西。我有一个包含逗号分隔值的字符串。基本上它是这样的:

public string shapes = circle, circle, square;

最终,此示例将在bool中返回false值,因为所有3个值都不匹配。

我正在寻找比较一个字符串中的值的最简单方法。到目前为止,我只看到比较2个或更多字符串的方法。我希望我能做到这一点,而不必诉诸于填充列表或数组。

4 个答案:

答案 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.");
    }