|

本帖最后由 顾凌 于 2025-8-1 04:48 编辑
emoji的表情格式[@emoji=XXXX],怎么批量转换到unicode编码\uxxxx 显示出来啊
用下面的代码实现了,大佬们有没有更优的方法
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 原始文本 | 文本型 | | | 处理后文本 | 文本型 | | | 起始位置 | 整数型 | | | 结束位置 | 整数型 | | | 十六进制字符串 | 文本型 | | | 代码点 | 整数型 | | | 循环计数 | 整数型 | | | 最大循环 | 整数型 | | | 当前位置 | 整数型 | | |
原始文本 = 编辑框1.内容 处理后文本 = 原始文本 最大循环 = 1000 循环计数 = 0 起始位置 = 寻找文本 (处理后文本, “[@emoji=”, , 假) 循环判断首 () 循环计数 = 循环计数 + 1  如果真 (循环计数 > 最大循环 ) 信息框 (“处理达到最大次数,可能存在异常格式”, 0, “提示”, ) 跳出循环 ()   如果真 (起始位置 = 0 )  跳出循环 ()   当前位置 = 起始位置  起始位置 = 起始位置 + 8  结束位置 = 寻找文本 (处理后文本, “]”, 起始位置, 假) 如果真 (结束位置 = 0 )  跳出循环 ()   十六进制字符串 = 取文本中间 (处理后文本, 起始位置, 结束位置 - 起始位置 ) 如果真 (取文本长度 (十六进制字符串 ) = 0 )    起始位置 = 寻找文本 (处理后文本, “[@emoji=”, 结束位置, 假) 跳出循环 ()   如果真 (是否为十六进制字符串 (十六进制字符串 ) = 假)   起始位置 = 寻找文本 (处理后文本, “[@emoji=”, 结束位置, 假) 跳出循环 ()   代码点 = 十六到十 (十六进制字符串 )  如果真 (代码点 = 0 )  起始位置 = 寻找文本 (处理后文本, “[@emoji=”, 结束位置, 假) 跳出循环 ()   处理后文本 = 取文本左边 (处理后文本, 当前位置 - 1 ) + 代码点到转义 (代码点 ) + 取文本右边 (处理后文本, 取文本长度 (处理后文本 ) - 结束位置 )  起始位置 = 寻找文本 (处理后文本, “[@emoji=”, , 假)  如果真 (起始位置 = 当前位置 ) 跳出循环 ()  循环判断尾 (起始位置 ≠ 0 )编辑框2.内容 = 处理后文本 变量名 | 类 型 | 静态 | 数组 | 备 注 | 结果 | 整数型 | | | i | 整数型 | | | 字符 | 文本型 | | | 数值 | 整数型 | | |
结果 = 0 计次循环首 (取文本长度 (十六进制文本 ), i ) 字符 = 取文本中间 (十六进制文本, i, 1 ) 字符 = 到大写 (字符 ) 判断 (字符 = “A”)  数值 = 10  判断 (字符 = “B”)  数值 = 11  判断 (字符 = “C”)  数值 = 12  判断 (字符 = “D”)  数值 = 13  判断 (字符 = “E”)  数值 = 14  判断 (字符 = “F”)  数值 = 15   数值 = 到数值 (字符 ) 结果 = 结果 × 16 + 数值 计次循环尾 ()返回 (结果 )变量名 | 类 型 | 静态 | 数组 | 备 注 | 转义文本 | 文本型 | | | 高代理项 | 整数型 | | | 低代理项 | 整数型 | | |
如果真 (代码点 = 0 ) 返回 (“”)  如果 (代码点 ≤ 65535 )  转义文本 = “\u” + 补零 (取十六进制文本 (代码点 ), 4 ) 代码点 = 代码点 - 65536  高代理项 = 55296 + 位与 (右移 (代码点, 10 ), 1023 )  低代理项 = 56320 + 位与 (代码点, 1023 )  转义文本 = “\u” + 补零 (取十六进制文本 (高代理项 ), 4 ) + “\u” + 补零 (取十六进制文本 (低代理项 ), 4 )返回 (转义文本)补充 = 目标长度 - 取文本长度 (文本 ) 如果 (补充 > 0 ) 返回 (取重复文本 (补充, “0”) + 文本 ) 返回 (文本 ) 计次循环首 (取文本长度 (文本 ), i ) 字符 = 取文本中间 (文本, i, 1 ) 字符 = 到大写 (字符 ) 如果真 (是否在数组中 (字符, { “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “A”, “B”, “C”, “D”, “E”, “F” }) = 假) 返回 (假)  计次循环尾 ()返回 (真) 计次循环首 (取数组成员数 (数组 ), i ) 如果真 (数组 [i ] = 查找值 ) 返回 (真)  计次循环尾 ()返回 (假)_转换按钮_被单击 () |
|