|
|

50精币
在新窗口里,这样子用,没有一点问题。
但是在另个软件里,如果取了字节集左边,子程序结束,软件就会崩溃,实在搞不懂为什么。不知道大佬有没有好用的取utf8字符真实左边位置的。
|
| 果心_取字节集左边 | 字节集 | | |
| 文本 | 字节集 | | | | 字符数目 | 整数型 | | | |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | 真实位置 | 整数型 | | | | 长度 | 整数型 | | | | 局_文本 | 字节集 | | | | a | 整数型 | | | | 返回数据 | 字节集 | | |
局_文本 = 文本 判断 (文本_是否UTF8_汇编 (局_文本 ))   局_文本 = UnicodeToUtf8_yc (局_文本 ) a = 1 长度 = 取字节集长度_汇编 (局_文本) 如果 (字符数目 > 长度 或 字符数目 ≤ 0 ) 返回 ({ })   真实位置 = 果心_取字符字节集真实位置 (局_文本, 字符数目, 长度 )返回数据 = 取字节集左边_汇编 (局_文本, 真实位置 ) 判断 (a = 1 ) 返回数据 = Utf8TOUnicode_yc2 (返回数据, ) 返回 (返回数据)|
| 果心_取字符字节集大小 | 整数型 | | |
| 文本 | 字节集 | | | | 字节位置 | 整数型 | | | | 长度 | 整数型 | | | |
判断 (长度 = 0 ) 长度 = 取字节集长度_汇编 (文本 )  如果真 (字节位置 > 长度 且 字节位置 ≠ 0 ) 返回 (-1 ) buffer = 文本 如果真 (buffer [字节位置 ] ≥ 161 ) 如果真 (字节位置 ≠ 长度 且 buffer [字节位置 + 1 ] ≥ 161 )  返回 (3 ) 返回 (3)返回 (1)|
| 果心_取字符字节集真实位置 | 整数型 | | |
| 文本 | 字节集 | | | | 字符位置 | 整数型 | | | | 长度 | 整数型 | | | |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | buffer | 字节集 | | | | i | | | | | 字节数 | | | | | 字符字节集大小 | 整数型 | | | | 查找位置 | 整数型 | | |
判断 (长度 = 0 ) 长度 = 取字节集长度_汇编 (文本 )   如果真 (字符位置 > 长度 或 字符位置 ≤ 0 ) 返回 (0 ) buffer = 文本 i = 1 查找位置 = 1 判断循环首 (i ≤ 字符位置 ) 字符字节集大小 = 果心_取字符字节集大小 (文本, 查找位置, 长度 ) 字节数 = 字节数 + 字符字节集大小  查找位置 = 字节数 + 1  i = i + 1 判断循环尾 () 返回 (字节数 )
|
最佳答案
查看完整内容
[e=0].版本 2
.支持库 spec
.子程序 __启动窗口_创建完毕
.局部变量 ansi, 文本型
ansi = “大是大非fdsljfs/0=-0都是浪费精力是”
调试输出 (leftW (ansi, 12))
' 大是大非fdsljfs/
.子程序 leftW, 文本型
.参数 ansi, 文本型
.参数 len, 整数型
.局部变量 bW, 字节集
.局部变量 lenW, 整数型
bW = 文本到UTF16 (ansi)
lenW = 取字节集长度 (bW)
len = len × 2
.如果真 (len ≥ lenW - 2)
返回 (ansi)
.如果真结束 ...
回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。 友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。 快捷通道:申请荣誉值 →
|