比较两个拆分字符串的结果

本文关键字:拆分 字符串 结果 两个 比较 | 更新日期: 2023-09-27 18:04:30

我有两个字符串输入,它们已被分割,因此每个条目都是可区分的(这些条目是产品属性,如长度、重量、光洁度、染色颜色等)。一个字符串具有产品的原始值,而另一个字符串具有新值(无论它们是什么——用户可以编辑他们想要的任何产品值)。

现在,我有分裂字符串产生我想要的信息,但我不确定如何比较结果彼此,因为单个产品值在foreach循环内。

这是我的:

 //checks to see which attributes have been changed/edited for the product
protected bool ifAttrChanged(string oldItm, string newItm)
{
    bool retVal = false;
    //get the original attributes of the product
    string[] oldItms = oldItm.Split(',');
    foreach (string oItm in oldItms)
    {
        if (oItm != "")
        {
            string[] oldThings = oItm.Split(',');
            string oldies = oldThings.GetValue(0).ToString();
        }
    }
    //get whatever new values have been entered for the product
    string[] newItms = newItm.Split(',');
    foreach (string nItm in newItms)
    {
        if (nItm != "")
        {
            string[] newThings = nItm.Split(',');
            string newbies = newThings.GetValue(0).ToString();
        }
    }
    if (newItms.ToString().Equals(oldItms.ToString(), StringComparison.Ordinal))
    {
        retVal = false;
        Label3.Text += retVal.ToString() + "<br />";
    }
    else
    {
        retVal = true;
        Label3.Text += retVal.ToString() + "<br />";
    }
     return retVal;
}

我真的很想比较old字符串变量和newbies字符串变量(奇怪的名字,但我不关心),但它们都在自己的foreach语句中,我不能在其他地方访问它们。我怎样才能成功地比较两个分割字符串的旧值和新值,以便我可以获得哪些值被更改,哪些值保持不变?

比较两个拆分字符串的结果

将所有字符串拆分并存储在数组中(oldItems和newItems),并使用System.Linq.

试试这个:

var changedResults = newItems.Where(x => !oldItems.Any(y => x == y));

有了这个,你将得到一个IEnumerable与所有的字符串在newItems没有出现在oldItems数组。如果你想将其转换为列表或其他类型,请添加:

var changedResults = newItems.Where(x => !oldItems.Any(y => x == y)).ToList();

希望对大家有所帮助

什么是"change"?除了吗?删除吗?修改吗?

如果只有加法,奥斯卡的方法有效。这是相同的事情(设置差异),但更简洁:

var changedResults = newItems.Except(oldItems)

但是,如果删除也是"更改",则需要从两个方面考虑。

var changedResults = newItems.Except(oldItems).Union(oldItems.Except(newItems));

因为集合只有字符串,所以没有修改的概念。