在.NET GetHashCode方法中,很多地方都使用.NET 方法.特别是在快速查找集合中的项目或确定相等性时.是否有关于如何GetHashCode为我的自定义类实现覆盖的标准算法/最佳实践,因此我不会降低性能?
我有一些测试检查显示给用户的字符串.
我不希望测试由于压痕或换行符等的变化而失败.所以我正在寻找像字符串比较那样的东西.
我可以开始创建一个正则表达式,但其他人可能有一个更好的解决方案因此这个问题.
我有一个字符串比较问题 - 在大多数情况下 - 表现得如预期的那样,但是由于我的代码没有将字符串对检测为重复,因此留下了大量重复数据库插入.
我以为我把它缩小到一个文化问题(西里尔字符),我解决了,但我现在得到'假阴性'(两个显然相等的字符串显示为不相等).
我查看了以下类似的问题,并尝试了以下比较方法.
我检查的类似SO问题:
以下是比较字符串的示例:(标题和说明)
饲料标题:埃尔斯伯格:他是英雄
饲料设计:丹尼尔埃尔斯伯格告诉美国有线电视新闻网的唐柠檬,国家安全局的骗子爱德华斯诺登表现出了勇气,做了大量的服务.
db title: Ellsberg:他是英雄
db desc:丹尼尔埃尔斯伯格告诉美国有线电视新闻网的唐柠檬,国家安全局的骗子爱德华斯诺登表现出勇气,做了大量的服务.
我的应用程序将从RSS提要获取的值与我在数据库中提供的值进行比较,并且只应插入"新"值.
//fetch existing articles from DB for the current feed:
List<Article> thisFeedArticles = (from ar in entities.Items
where (ar.ItemTypeId == (int)Enums.ItemType.Article) && ar.ParentId == feed.FeedId
&& ar.DatePublished > datelimit
select new Article
{
Title = ar.Title,
Description = ar.Blurb
}).ToList();
Run Code Online (Sandbox Code Playgroud)
以下比较的每个人都显示与Ellsberg标题/描述不匹配.ie matches1 to matches6都有Count()==0
(请原谅列举的变量名称 - 它们仅用于测试)
// comparison methods
CompareOptions compareOptions = CompareOptions.OrdinalIgnoreCase;
CompareOptions compareOptions2 …Run Code Online (Sandbox Code Playgroud) 我需要比较两个字符串忽略空格和换行符,所以以下字符串应该相等:
"Initial directory structure.\r\n \r\n The directory tree has been changed"
"Initial directory structure.\n\nThe directory tree has been changed"
Run Code Online (Sandbox Code Playgroud)
有人知道如何实现它?提前致谢.