递归火山软件开发平台

标题: 求助,易源码转视窗 [打印本页]

作者: 凝固    时间: 2025-10-15 21:36
标题: 求助,易源码转视窗
本帖最后由 凝固 于 2025-10-16 23:42 编辑

这是字典格式:吖a,阿a,啊a,锕a,錒a,嗄a,哎ai,哀ai,唉ai,埃ai,挨ai,溾ai,锿ai,鎄ai,啀ai,捱ai,皑ai,凒ai,嵦ai,溰ai,嘊ai,敱ai,敳ai

我把易语言的源码上传了一下,在附件里;

作者: zlk    时间: 2025-10-15 23:16
火山的文本操作的是字符,每个占两个字节。
(, 下载次数: 117)

作者: 乐易论坛    时间: 2025-10-16 09:12
[源码]文本_取拼音 支持声调 速度还行
https://bbs.voldp.com/thread-16322-1-1.html
(出处: 递归火山软件开发平台)

作者: 凝固    时间: 2025-10-16 14:21
zlk 发表于 2025-10-15 23:16
火山的文本操作的是字符,每个占两个字节。

感谢大佬,不过不是想要的答案,大佬可以下载源码看看;
源码地址:https://www.eyuyan.cn/post/18418.html
作者: weilai    时间: 2025-10-16 18:01
火山速度更快
作者: weilai    时间: 2025-10-16 19:51
凝固 发表于 2025-10-16 14:21
感谢大佬,不过不是想要的答案,大佬可以下载源码看看;
源码地址:https://www.eyuyan.cn/post/18418.ht ...

不能下载,下载还得注册,注册还收费
作者: zlk    时间: 2025-10-16 22:25
用无序哈希表复刻了一个,10W次耗时23毫秒。
作者: 凝固    时间: 2025-10-16 22:49
zlk 发表于 2025-10-16 22:25
用无序哈希表复刻了一个,10W次耗时23毫秒。

分享出来学习一下。刚玩火山,真的啥也不会;
作者: weilai    时间: 2025-10-16 23:04
凝固 发表于 2025-10-16 22:49
分享出来学习一下。刚玩火山,真的啥也不会;

能不能把字典发出来
作者: 凝固    时间: 2025-10-16 23:36
乐易论坛 发表于 2025-10-16 09:12
[源码]文本_取拼音 支持声调 速度还行
https://bbs.voldp.com/thread-16322-1-1.html
(出处: 递归火山软件 ...

大佬,缺方法啊。

<C:\Users\Administrator\Desktop\取拼音\取拼音.v>, 17: 错误: 没有找到所指定的方法名称"编码_Unicode到Utf8"
<C:\Users\Administrator\Desktop\取拼音\取拼音.v>, 22: 错误: 没有找到所指定的方法名称"字节_到无符号"
<C:\Users\Administrator\Desktop\取拼音\取拼音.v>, 26: 错误: 没有找到所指定的方法名称"编码_Utf8到Unicode"
<C:\Users\Administrator\Desktop\取拼音\取拼音.v>, 29: 错误: 没有找到所指定的方法名称"取字符_"
作者: 凝固    时间: 2025-10-16 23:38
本帖最后由 凝固 于 2025-10-16 23:45 编辑
weilai 发表于 2025-10-16 23:04
能不能把字典发出来

已发易语言源码了,里面有字典
作者: weilai    时间: 2025-10-17 00:06
凝固 发表于 2025-10-16 23:38
已发易语言源码了,里面有字典

感谢分享,我研究一下
作者: zlk    时间: 2025-10-17 00:32
凝固 发表于 2025-10-16 22:49
分享出来学习一下。刚玩火山,真的啥也不会;

字典从易源码中复制出来保存为"拼音字典1.txt"。 (, 下载次数: 2) 做了三个版本:哈希表、无序哈希表、对象数组。
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 类 取拼音001 <公开 折叠>
  3. {
  4.     方法 对比测试 <公开 类型 = 文本型>
  5.     参数 文本内容 <类型 = 文本型 @默认值 = "嘻嘻哈哈7799闇龍..?">
  6.     {
  7.         变量 xj <类型 = 计算耗时类>
  8.         变量 t <类型 = 文本型>
  9.         变量 tt <类型 = 文本型>
  10.         xj.重新计时 ()
  11.         t = 取拼音_快速0 (文本内容, 假, "|")
  12.         调试输出 (t)
  13.         tt = tt + " (哈希表 首次:" + xj.取耗时文本 (真, -1, , , )
  14.         计次循环 (100000)
  15.         {
  16.             取拼音_快速0 (文本内容, 假, "|")
  17.         }
  18.         tt = tt + ">10W次:" + xj.取耗时文本 (真, -1, , , ) + ")"
  19.         // 本对象.标题 = tt
  20.         调试输出 (tt)

  21.         xj.重新计时 ()
  22.         t = 取拼音_快速1 (文本内容, 假, "|")
  23.         调试输出 (t)
  24.         tt = tt + " (无序哈希表 首次:" + xj.取耗时文本 (真, -1, , , )
  25.         计次循环 (100000)  // 60毫秒
  26.         {
  27.             取拼音_快速1 (文本内容, 假, "|")
  28.         }
  29.         tt = tt + ">>10W次:" + xj.取耗时文本 (真, -1, , , ) + ")"
  30.         // 本对象.标题 = tt
  31.         调试输出 (tt)

  32.         xj.重新计时 ()
  33.         t = 取拼音_快速2 (文本内容, 假, "|")
  34.         调试输出 (t)
  35.         tt = tt + " (对象数组 首次:" + xj.取耗时文本 (真, -1, , , )
  36.         计次循环 (100000)  // 60毫秒
  37.         {
  38.             取拼音_快速2 (文本内容, 假, "|")
  39.         }
  40.         tt = tt + ">>>10W次:" + xj.取耗时文本 (真, -1, , , ) + ")"
  41.         // 本对象.标题 = tt
  42.         调试输出 (tt)
  43.         返回 (tt)
  44.     }

  45.     常量 拼音字典 <类型 = 视窗文件资源 值 = "拼音字典1.txt">

  46.     变量 全局_拼音二维数组_初始化0 <类型 = 逻辑型 值 = 假 注释 = "哈希表">
  47.     变量 全局_拼音二维数组_初始化1 <类型 = 逻辑型 值 = 假 注释 = "无序哈希表">
  48.     变量 全局_拼音二维数组_初始化2 <类型 = 逻辑型 值 = 假 注释 = "对象数组">
  49.     变量 全局_拼音二维数组0 <类型 = 字符到文本哈希表 注释 = "哈希表">
  50.     变量 全局_拼音二维数组1 <类型 = 字符到文本无序哈希表 注释 = "无序哈希表">
  51.     变量 全局_拼音二维数组2 <类型 = 字符与拼音_数组 注释 = "对象数组">

  52.     方法 取拼音_数组_初始化0 <注释 = "哈希表">
  53.     {
  54.         变量 拼音_数组 <类型 = 文本数组类>
  55.         变量 首字符 <类型 = 字符>
  56.         变量 文本内容 <类型 = 文本型>
  57.         变量 j <类型 = 字节集类>
  58.         全局_拼音二维数组0.清空 ()
  59.         全局_拼音二维数组_初始化0 = 真
  60.         如果 (文件资源到字节集 (拼音字典, j) == 真)
  61.         {
  62.             文本内容 = 多字节到文本 (j)
  63.             如果 (分割文本 (文本内容, ",", 拼音_数组, 真, 真) > 0)
  64.             {
  65.                 拼音_数组.枚举循环 ()
  66.                 {
  67.                     文本内容 = 拼音_数组.取枚举值 ()
  68.                     如果 (取文本长度 (文本内容) > 1)
  69.                     {
  70.                         首字符 = 取字符 (文本内容, 0)
  71.                         全局_拼音二维数组0.插入 (首字符, 取文本右边 (文本内容, 取文本长度 (文本内容) - 1))
  72.                     }
  73.                 }
  74.             }
  75.         }
  76.     }

  77.     方法 取拼音_快速0 <公开 类型 = 文本型 注释 = "哈希表">
  78.     参数 文本 <类型 = 文本型 注释 = "欲取拼音的文本">
  79.     参数 保留非汉字 <类型 = 逻辑型 注释 = "默认假,如果某个字符在字典中不存在,则不输出该字符;如果为真则保留。" @默认值 = 假>
  80.     参数 分隔符 <类型 = 文本型 注释 = "默认用空格分割" @默认值 = " ">
  81.     {
  82.         变量 i <类型 = 整数 注释 = "下标">
  83.         变量 当前字符 <类型 = 字符>
  84.         变量 返回值 <类型 = 文本型>
  85.         如果 (全局_拼音二维数组_初始化0 == 假)
  86.         {
  87.             取拼音_数组_初始化0 ()
  88.         }
  89.         如果 (文本是否为空 (分隔符) == 真)
  90.         {
  91.             分隔符 = " "
  92.         }
  93.         返回值 = ""
  94.         i = 取文本长度 (文本)
  95.         计次循环 (i)
  96.         {
  97.             当前字符 = 取字符 (文本, 取循环索引 ())
  98.             如果 (全局_拼音二维数组0.是否存在 (当前字符) == 真)
  99.             {
  100.                 加入文本 (返回值, 全局_拼音二维数组0.取值 (当前字符))
  101.                 加入文本 (返回值, 分隔符)
  102.             }
  103.             否则 (当前字符 == 13 || 当前字符 == 10)
  104.             {
  105.                 加入字符 (返回值, 当前字符)
  106.             }
  107.             否则 (保留非汉字 == 真)
  108.             {
  109.                 加入字符 (返回值, 当前字符)
  110.                 加入文本 (返回值, 分隔符)
  111.             }
  112.             否则
  113.             {
  114.                 // 加入文本 (返回值, 分隔符)
  115.             }
  116.         }
  117.         删自身尾空 (返回值)
  118.         返回 (返回值)
  119.     }

  120.     方法 取拼音_数组_初始化1 <注释 = "无序哈希表" 折叠>
  121.     {
  122.         变量 拼音_数组 <类型 = 文本数组类>
  123.         变量 首字符 <类型 = 字符>
  124.         变量 文本内容 <类型 = 文本型>
  125.         变量 j <类型 = 字节集类>
  126.         全局_拼音二维数组1.清空 ()
  127.         全局_拼音二维数组_初始化1 = 真
  128.         如果 (文件资源到字节集 (拼音字典, j) == 真)
  129.         {
  130.             文本内容 = 多字节到文本 (j)
  131.             如果 (分割文本 (文本内容, ",", 拼音_数组, 真, 真) > 0)
  132.             {
  133.                 拼音_数组.枚举循环 ()
  134.                 {
  135.                     文本内容 = 拼音_数组.取枚举值 ()
  136.                     如果 (取文本长度 (文本内容) > 1)
  137.                     {
  138.                         首字符 = 取字符 (文本内容, 0)
  139.                         全局_拼音二维数组1.插入 (首字符, 取文本右边 (文本内容, 取文本长度 (文本内容) - 1))
  140.                     }
  141.                 }
  142.             }
  143.         }
  144.     }

  145.     方法 取拼音_快速1 <公开 类型 = 文本型 注释 = "无序哈希表">
  146.     参数 文本 <类型 = 文本型 注释 = "欲取拼音的文本" 折叠>
  147.     参数 保留非汉字 <类型 = 逻辑型 注释 = "默认假,如果某个字符在字典中不存在,则不输出该字符;如果为真则保留。" @默认值 = 假>
  148.     参数 分隔符 <类型 = 文本型 注释 = "默认用空格分割" @默认值 = " ">
  149.     {
  150.         变量 i <类型 = 整数 注释 = "下标">
  151.         变量 当前字符 <类型 = 字符>
  152.         变量 返回值 <类型 = 文本型>
  153.         如果 (全局_拼音二维数组_初始化1 == 假)
  154.         {
  155.             取拼音_数组_初始化1 ()
  156.         }
  157.         如果 (文本是否为空 (分隔符) == 真)
  158.         {
  159.             分隔符 = " "
  160.         }
  161.         返回值 = ""
  162.         i = 取文本长度 (文本)
  163.         计次循环 (i)
  164.         {
  165.             当前字符 = 取字符 (文本, 取循环索引 ())
  166.             如果 (全局_拼音二维数组1.是否存在 (当前字符) == 真)
  167.             {
  168.                 加入文本 (返回值, 全局_拼音二维数组1.取值 (当前字符))
  169.                 加入文本 (返回值, 分隔符)
  170.             }
  171.             否则 (当前字符 == 13 || 当前字符 == 10)
  172.             {
  173.                 加入字符 (返回值, 当前字符)
  174.             }
  175.             否则 (保留非汉字 == 真)
  176.             {
  177.                 加入字符 (返回值, 当前字符)
  178.                 加入文本 (返回值, 分隔符)
  179.             }
  180.             否则
  181.             {
  182.                 // 加入文本 (返回值, 分隔符)
  183.             }
  184.         }
  185.         删自身尾空 (返回值)
  186.         返回 (返回值)
  187.     }

  188.     方法 取拼音_数组_初始化2 <注释 = "对象数组" 折叠>
  189.     {
  190.         变量 拼音_数组 <类型 = 文本数组类>
  191.         变量 首字符 <类型 = 字符>
  192.         变量 文本内容 <类型 = 文本型>
  193.         变量 j <类型 = 字节集类>
  194.         // 全局_拼音二维数组.清空 ()
  195.         全局_拼音二维数组2.删除所有成员 ()
  196.         全局_拼音二维数组_初始化2 = 真
  197.         如果 (文件资源到字节集 (拼音字典, j) == 真)
  198.         {
  199.             全局_拼音二维数组2.批量加入新成员 (字符与拼音, 65536)
  200.             // 计次循环 (65536)
  201.             {
  202.                 // 首字符 = (字符)取循环索引 ()
  203.                 // 文本内容 = ""
  204.                 // 文本内容 = 加入字符 (首字符)
  205.                 // 全局_拼音二维数组.加入成员 (文本内容)
  206.             }
  207.             文本内容 = 多字节到文本 (j)
  208.             如果 (分割文本 (文本内容, ",", 拼音_数组, 真, 真) > 0)
  209.             {
  210.                 拼音_数组.枚举循环 ()
  211.                 {
  212.                     文本内容 = 拼音_数组.取枚举值 ()
  213.                     如果 (取文本长度 (文本内容) > 1)
  214.                     {
  215.                         首字符 = 取字符 (文本内容, 0)
  216.                         // 全局_拼音二维数组.插入 (首字符, 取文本右边 (文本内容, 取文本长度 (文本内容) - 1))
  217.                         全局_拼音二维数组2.取成员 ((整数)首字符).是否有效 = 真
  218.                         全局_拼音二维数组2.取成员 ((整数)首字符).拼音文本 = 取文本右边 (文本内容, 取文本长度 (文本内容) - 1)
  219.                     }
  220.                 }
  221.             }
  222.         }
  223.     }

  224.     方法 取拼音_快速2 <公开 类型 = 文本型 注释 = "对象数组" 折叠>
  225.     参数 文本 <类型 = 文本型 注释 = "欲取拼音的文本">
  226.     参数 保留非汉字 <类型 = 逻辑型 注释 = "默认假,如果某个字符在字典中不存在,则不输出该字符;如果为真则保留。" @默认值 = 假>
  227.     参数 分隔符 <类型 = 文本型 注释 = "默认用空格分割" @默认值 = " ">
  228.     {
  229.         变量 i <类型 = 整数 注释 = "下标">
  230.         变量 当前字符 <类型 = 字符>
  231.         变量 返回值 <类型 = 文本型>
  232.         如果 (全局_拼音二维数组_初始化2 == 假)
  233.         {
  234.             取拼音_数组_初始化2 ()
  235.         }
  236.         如果 (文本是否为空 (分隔符) == 真)
  237.         {
  238.             分隔符 = " "
  239.         }
  240.         返回值 = ""
  241.         i = 取文本长度 (文本)
  242.         计次循环 (i)
  243.         {
  244.             当前字符 = 取字符 (文本, 取循环索引 ())
  245.             如果 (全局_拼音二维数组2.取成员 ((整数)当前字符).是否有效 == 真)  // 全局_拼音二维数组.是否存在 (当前字符) == 真)
  246.             {
  247.                 加入文本 (返回值, 全局_拼音二维数组2.取成员 ((整数)当前字符).拼音文本)
  248.                 // 加入文本 (返回值, 全局_拼音二维数组.取值 (当前字符))
  249.                 加入文本 (返回值, 分隔符)
  250.             }
  251.             否则 (当前字符 == 13 || 当前字符 == 10)
  252.             {
  253.                 加入字符 (返回值, 当前字符)
  254.             }
  255.             否则 (保留非汉字 == 真)
  256.             {
  257.                 加入字符 (返回值, 当前字符)
  258.                 加入文本 (返回值, 分隔符)
  259.             }
  260.             否则
  261.             {
  262.                 // 加入文本 (返回值, 分隔符)
  263.             }
  264.         }
  265.         删自身尾空 (返回值)
  266.         返回 (返回值)
  267.     }
  268. }

  269. 类 字符到文本无序哈希表 <公开 基础类 = 基本无序哈希表模板类 @模板实现类 = "字符,文本型">

  270. 类 字符到文本哈希表 <公开 基础类 = 通用哈希表模板类 @模板实现类 = "字符,文本型">

  271. 类 字符与拼音_数组 <基础类 = 对象数组模板类 @模板实现类 = "字符与拼音">

  272. 类 字符与拼音 <折叠>
  273. {
  274.     变量 是否有效 <公开 类型 = 逻辑型 值 = 假>
  275.     变量 字符值 <公开 类型 = 字符 值 = 0>
  276.     变量 拼音文本 <公开 类型 = 文本型 值 = "">
  277. }
复制代码





作者: weilai    时间: 2025-10-17 02:23
凝固 发表于 2025-10-16 23:38
已发易语言源码了,里面有字典

(, 下载次数: 6)

测试了下,十万次几十毫秒,最主要是载入词库超快,0毫秒就能载入

作者: 乐易论坛    时间: 2025-10-17 07:28
凝固 发表于 2025-10-16 23:36
大佬,缺方法啊。

, 17: 错误: 没有找到所指定的方法名称"编码_Unicode到Utf8"

文本到UTF8...UTF8到文本..就这些




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4