微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

比较字符串变量并忽略外部空格

如何解决比较字符串变量并忽略外部空格

我具有此功能(C#.Net DLL的一部分),该功能使用特定值来定位XML元素并替换文本。它使用递归:

   private bool ReplaceNameInXMLDocument(XElement pElement,string strOldName,string strNewName)
    {
        bool bReplaced = false;

        try
        {
            if (pElement.HasElements)
            {
                foreach (var pSubElement in pElement.Descendants())
                {
                    ReplaceNameInXMLDocument(pSubElement,strOldName,strNewName);
                }
            }
            else if (pElement.Value == strOldName)
            {
                pElement.Value = strNewName;
            }

            bReplaced = true;
        }
        catch (Exception ex)
        {
            SimpleLog.Log(ex);
        }

        return bReplaced;
    }

我唯一遇到的问题与空白有关。假设strOldNameHappy,但是在XML数据文件中,那里的值(无论出于何种原因)是Happy (它有多余的空间)。目前,由于与whitepsace的差异,我的比较方法无法找到匹配项。

我意识到我可以像这样更改else子句:

{
    string strExistingValue = pElement.Value.Trim();
    if(strExistingValue = strOldName)
    {
        ...
    }
}

但是还有其他方法可以将strOldNamestring元素进行比较,并自动忽略外部空白吗?这是因为我知道变量strOldName已被Trim取代。除了我建议的调整以外,还有没有更简单的比较方法

解决方法

没有 BLC 字符串比较/等式可以为您进行修饰。但是,您可以轻松创建扩展方法

注意:这只是一个示例,您需要确保它可以满足您的要求

public static class Extensions
{
     public static bool MyIsEqual(
            this string source,string value,StringComparison comparisonType = StringComparison.CurrentCulture)
       => string.Equals(source?.Trim(),value?.Trim(),comparisonType);
}

用法

if(strOldName.MyIsEqual(pElement.Value))
   ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。