首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较相似字符串的C#

比较相似字符串的C#
EN

Stack Overflow用户
提问于 2009-04-14 11:42:46
回答 4查看 8K关注 0票数 1

我有一个带有一些文件名(LIST1)的泛型,还有一个具有完整名称列表(LIST2)的更大的文件名。我需要将LIST1中的名称与LIST2中类似的名称相匹配。例如

代码语言:javascript
复制
LIST1
- **MAIZE_SLIP_QUANTITY_3_9.1.aif**

LIST 2
1- TUTORIAL_FAILURE_CLINCH_4.1.aif
2- **MAIZE_SLIP_QUANTITY_3_5.1.aif**
3- **MAIZE_SLIP_QUANTITY_3_9.2.aif**
4- TUTORIAL_FAILURE_CLINCH_5.1.aif
5- TUTORIAL_FAILURE_CLINCH_6.1.aif
6- TUTORIAL_FAILURE_CLINCH_7.1.aif
7- TUTORIAL_FAILURE_CLINCH_8.1.aif
8- TUTORIAL_FAILURE_CLINCH_9.1.aif
9- TUTORIAL_FAILURE_PUSH_4.1.aif

我读过关于Levenshtein距离的文章,并在框架(SignumFramework实用程序)中使用了它的实现。在第2行和第3行返回distance=1,但在我的例子中,第3行比第2行更匹配。

还有更好的方法来比较相似的字符串吗?更灵活的东西?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-14 12:00:01

当作为字符串进行比较时,"9.2“并不比"9.1”的"5.1“匹配得更好。如果希望对版本号进行数值计算,则必须解析字符串,以便可以分别比较字符串部分和数字部分。

票数 5
EN

Stack Overflow用户

发布于 2009-04-14 12:12:36

您的相似性标准可以是其他几个标准的组合。一个可能是Levenshtein距离,另一个可能是最长的公共子字符串或前缀/后缀。

最长的公共子字符串问题实际上是编辑距离的特例,当替换被禁止并且只允许字符匹配、插入和删除是允许的编辑操作时(参见这里)。

进一步描述了字符串相似性的度量标准( 这里 )。

票数 1
EN

Stack Overflow用户

发布于 2009-04-14 12:14:11

正则表达式可用于获取与名称匹配的项。版本号可以收集在匹配中的regex组中,并解析为.net对象(例如十进制),您可以使用该对象来比较最接近的对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/747169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档