Foxtable(狐表)用户栏目专家坐堂 → 请教两个字符串比较相似度思路?


  共有5739人关注过本帖树形打印复制链接

主题:请教两个字符串比较相似度思路?

帅哥哟,离线,有人找我吗?
苍风霁月
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:704 积分:7070 威望:0 精华:0 注册:2012/11/4 23:10:00
请教两个字符串比较相似度思路?  发帖心情 Post By:2013/9/18 16:48:00 [只看该作者]

比如:abcdef  与  cedmnk 有50%字符相似,请教设计思路?字符串还有中文的,又该如何考虑?
[此贴子已经被作者于2013-9-18 16:50:45编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/9/18 17:01:00 [只看该作者]

比较笨没效率的方法是, 双重循环 一个个字符判断! 

 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/9/18 17:05:00 [只看该作者]

Dim sa As String = "abcdek"
Dim sb As String = "cedmnk"
Dim c As Integer
For i As Integer = 0 To sa.Length - 1
   For j As Integer = 0 To sb.Length - 1
      If sa(i) = sb(j) Then
         c + = 1
      End If
   Next
Next
MessageBox.Show("有百分之" & Format(c/sa.Length*100,"#0.00") & "字符相同")

 回到顶部
帅哥哟,离线,有人找我吗?
苍风霁月
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:704 积分:7070 威望:0 精华:0 注册:2012/11/4 23:10:00
  发帖心情 Post By:2013/9/18 17:06:00 [只看该作者]

有没有聪明点的办法也?我的产品目录不重复的有两万余种,那每遇一产品,就要循环判断两万次基础上,循环字符串个数的比较!

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/9/18 17:12:00 [只看该作者]

这个死很多脑细胞都不行,你将就着用吧.

 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/9/18 17:17:00 [只看该作者]

把产品目录传上来,看看其中有无规律,根据规律减少循环判断的次数。

 回到顶部
帅哥哟,离线,有人找我吗?
逛逛
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:1693 积分:12135 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2013/9/18 20:08:00 [只看该作者]

以下是引用苍风霁月在2013-9-18 17:06:00的发言:
有没有聪明点的办法也?我的产品目录不重复的有两万余种,那每遇一产品,就要循环判断两万次基础上,循环字符串个数的比较!

所以才会把产品分类规则和编码规则提到一个相对高的高度。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/9/18 20:15:00 [只看该作者]

 楼主是不是想问,一个字符串包含另一个字符串的多少个字符?

Dim sa As String = "abcdek"
Dim sb As String = "cedmnk"
Dim count As Integer
For i As Integer = 0 To sa.Length - 1
    If sb.Contains(sa(i)) Then
        count += 1
    End If
Next

msgbox(count)

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/9/18 22:16:00 [只看该作者]

楼主提问的思路有问题,所谓的50%,是建立在谁与谁的基础上,如果这样

 

比如:abcdef  与  cedmnkKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFFFFYYYYYYYYYYY   还是50%吗?

亦或者:abcdefefefhuicxbvyucvbdflgfbldvjdvds 和cedmnk他又该是百分之多少呢?


 回到顶部