如何解决比较字符串变量并忽略外部空格
我具有此功能(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;
}
我唯一遇到的问题与空白有关。假设strOldName
是Happy
,但是在XML数据文件中,那里的值(无论出于何种原因)是Happy
(它有多余的空间)。目前,由于与whitepsace的差异,我的比较方法无法找到匹配项。
我意识到我可以像这样更改else
子句:
{
string strExistingValue = pElement.Value.Trim();
if(strExistingValue = strOldName)
{
...
}
}
但是还有其他方法可以将strOldName
与string
元素进行比较,并自动忽略外部空白吗?这是因为我知道变量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 举报,一经查实,本站将立刻删除。