|

分享源码
界面截图: |
- |
是否带模块: |
- |
备注说明: |
- |
本帖最后由 菜就多多练 于 2025-5-4 11:35 编辑
你来我也来
易语言版 不需要模块
e.e
(9.23 KB, 下载次数: 16)
其实是deepseek 用py代码改的https://125.confly.eu.org/thread-14855243-1-1.html
py 和c++ 可以做的 易语言也可以做!!
|
模糊匹配并评分 | 整数型 | | |
候选数量 | 整数型 | | | | cha询文本 | 文本型 | | | | 候选数组 | 文本型 | | | | 结果数组 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | i | 整数型 | | | 得分 | 整数型 | | | 临时结果 | 文本型 | | 0 |
计次循环首 (候选数量, i ) 得分 = 计算匹配得分_增强版 (预处理文本 (cha询文本 ), 预处理文本 (候选数组 [i ]))  如果 (得分 > 0 ) 加入成员 (临时结果, 到文本 (i - 1 ) + “|” + 候选数组 [i ] + “|” + 到文本 (得分 ))       计次循环尾 () 数组排序 (临时结果, 假)结果数组 = 临时结果 返回 (取数组成员数 (临时结果 )) |
计算匹配得分_增强版 | 整数型 | | |
cha询文本 | 文本型 | | | | 目标文本 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 得分 | 整数型 | | | 最后匹配位置 | 整数型 | | | cha询位置 | 整数型 | | | 目标位置 | 整数型 | | | cha询长度 | 整数型 | | | 目标长度 | 整数型 | | | 前字符 | 文本型 | | | 当前字符 | 文本型 | | | 间隔 | 整数型 | | | 长度系数 | 双精度小数型 | | | 位置系数 | 双精度小数型 | | |
cha询长度 = 取文本长度 (cha询文本 )目标长度 = 取文本长度 (目标文本 )最后匹配位置 = -1 cha询位置 = 1 目标位置 = 1 判断循环首 (cha询位置 ≤ cha询长度 且 目标位置 ≤ 目标长度 ) 当前字符 = 取文本中间 (目标文本, 目标位置, 1 ) 如果 (取文本中间 (cha询文本, cha询位置, 1 ) = 当前字符 )  得分 = 得分 + 10    判断 (目标位置 = 1 )   如果 (cha询位置 = 1 )    得分 = 得分 + 50     得分 = 得分 + 30       判断 (cha询位置 = 1 )   得分 = 得分 + 20             如果 (目标位置 > 1 )   前字符 = 取文本中间 (目标文本, 目标位置 - 1, 1 )   判断 (取代码 (前字符, ) = 95 或 取代码 (前字符, ) = 32 或 取代码 (前字符, ) = 45 )     得分 = 得分 + 25    判断 (是否小写 (前字符 ) 且 是否大写 (当前字符 ))     得分 = 得分 + 25                     如果 (最后匹配位置 ≥ 0 )   间隔 = 目标位置 - 最后匹配位置 - 1    如果 (间隔 = 0 )    得分 = 得分 + 25     如果 (最后匹配位置 > 1 且 目标位置 - 最后匹配位置 = 1 )     得分 = 得分 + 10                    得分 = 得分 - 取惩罚值 (间隔 )           最后匹配位置 = 目标位置   cha询位置 = cha询位置 + 1     目标位置 = 目标位置 + 1 判断循环尾 () 如果 (cha询位置 > cha询长度 ) 长度系数 = 0.5 + 0.5 × cha询长度 ÷ 目标长度  位置系数 = 0.7 + 0.3 � � (1 - 目标位置 ÷ 目标长度 ) 返回 (取较大值 (取整 (得分 × 长度系数 × 位置系数 ), 1 )) 返回 (0 ) 返回 (到大写 (删首尾空 (原始文本 )) )返回 (取代码 (字符, ) ≥ 97 且 取代码 (字符, ) ≤ 122 )返回 (取代码 (字符, ) ≥ 65 且 取代码 (字符, ) ≤ 90 )原始值 = 求次方 (间隔, 1.5 )返回 (取较小值 (取整 (原始值 × 10 ) ÷ 10, 15 )) 变量名 | 类 型 | 静态 | 数组 | 备 注 | 数据源 | 文本型 | | 0 | 结果 | 文本型 | | 0 | 匹配数 | 整数型 | | | i | 整数型 | | |
数据源 = { “MB_YESNO”, “MB_ABORTRETRYIGNORE”, “MESSAGEBOX_YESNO”, “MB_ICONQUESTION” }匹配数 = 模糊匹配并评分 (取数组成员数 (数据源 ), “m_no”, 数据源, 结果 )调试输出 (“-----匹配结果-----”) 计次循环首 (匹配数, i ) 调试输出 (结果 [i ]) 计次循环尾 () 如果 (数值1 ≥ 数值2 ) 返回 (数值1 ) 返回 (数值2 ) 如果 (数值1 ≤ 数值2 ) 返回 (数值1 ) 返回 (数值2 ) 测试示例 ()
字符被屏蔽 建议下载代码
|
|