精易论坛
标题: 代码实现易语言的分割文本() [打印本页]
作者: APPLEUFO 时间: 2021-11-26 23:29
标题: 代码实现易语言的分割文本()
|
文本模块_分割文本 | 整数型 | |
|
参数_原始文本 | 文本型 | | | |
参数_分割用文本 | 文本型 | | | | 参数_返回数组 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
局变_找到位置 | 整数型 | | |
局变_标记 | 整数型 | | 0 |
n1 | 整数型 | | |
x1 | 整数型 | | |
y1 | 整数型 | | |
局变_文本 | 文本型 | | |
如果真 (取文本长度 (参数_原始文本
) = 0
)
返回 (0
)
局变_找到位置 =
寻找文本 (参数_原始文本, 参数_分割用文本, ,
假)
如果真 (局变_找到位置 = -1
)
返回 (0
)
清除数组 (参数_返回数组
)加入成员 (局变_标记, 0
) 加入成员 (局变_标记, 局变_找到位置
)
循环判断首 ()
局变_找到位置 =
寻找文本 (参数_原始文本, 参数_分割用文本, 局变_找到位置 + 1,
假)
如果 (局变_找到位置 = -1
)
跳出循环 ()



加入成员 (局变_标记, 局变_找到位置
)

循环判断尾 (真)
如果真 (局变_标记
[取数组成员数 (局变_标记
)] ≠
取文本长度 (参数_原始文本
))
加入成员 (局变_标记,
取文本长度 (参数_原始文本
) + 1
) 
计次循环首 (取数组成员数 (局变_标记
) - 1, n1
)
x1 = 局变_标记
[n1
] + 1

y1 = 局变_标记
[n1 + 1
] - 1

如果真 (x1 > y1
) 
到循环尾 ()


局变_文本 =
文本模块_取文本中间_位置 (参数_原始文本, x1, y1
)
加入成员 (参数_返回数组, 局变_文本
)
计次循环尾 ()返回 (取数组成员数 (参数_返回数组
))
|
文本模块_取文本中间_位置 | 文本型 | |
|
参数文本 | 文本型 | | | |
参数开始位置 | 整数型 | | | | 参数结束位置 | 整数型 | | | |
如果真 (参数开始位置 = -1
或 参数结束位置 = -1
)
返回 (“”)
局变结果文本 =
取文本中间 (参数文本, 参数开始位置, 参数结束位置 �
�� (参数开始位置 - 1
))
返回 (局变结果文本
)
这是结果
变量名 | 类 型 | 静态 | 数组 | 备 注 |
aaaaa | 文本型 | | |
bbb | 文本型 | | 0 |
ccc | 文本型 | | 0 |
aaaaa =
“xxx.yyy.zzz”bbb =
分割文本 (aaaaa,
“.”,
)文本模块_分割文本 (aaaaa,
“.”, ccc
)调试输出 (bbb
)调试输出 (ccc
)调试输出 (“_____________________________”)aaaaa =
“https://www.bilibili.com/video/BV1RL411M7jK”bbb =
分割文本 (aaaaa,
“/”,
)文本模块_分割文本 (aaaaa,
“/”, ccc
)调试输出 (bbb
)调试输出 (ccc
)调试输出 (“_____________________________”)aaaaa =
“xxxYYyyyYzzz”bbb =
分割文本 (aaaaa,
“Y”,
)文本模块_分割文本 (aaaaa,
“Y”, ccc
)调试输出 (bbb
)调试输出 (ccc
)
例如
分割文本() 默认结果是 “a”,"","b"
而这个 文本模块_分割文本() 的结果就是 “a”,"b"
易语言默认的分割文本,有时候经常会出现空数组
这个也把空数组给删除了,准确来说是跳过不统计进去
作者: 醉卧美人膝 时间: 2021-11-27 00:25
来看看 

作者: guige666 时间: 2021-11-27 00:30
66666666666666666666666
作者: wtflxk 时间: 2021-11-27 09:41
这到也是个方法,发散性思维真心不错
作者: mxdn 时间: 2021-11-27 17:31
kk看看拿金币
作者: 我就我 时间: 2021-11-29 00:54
这么复杂



作者: jzlyx110 时间: 2021-11-29 02:11
看起来好厉害
作者: BIG牛肉面 时间: 2021-11-29 08:59
谢谢分享来看看
作者: 我就我 时间: 2021-12-1 04:55
有点不懂,从源码来看aaaaa不也是数组?
作者: APPLEUFO 时间: 2021-12-4 10:33
aaa是文本型啊
作者: q312459945 时间: 2021-12-4 19:48
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
作者: 趣冉科技 时间: 2022-1-4 21:55
感谢楼主分享,支持一下~~!!!
作者: 瓶中仙子 时间: 2022-1-24 00:46
比易自带的分割文本的速度怎么样
作者: 瓶中仙子 时间: 2022-1-24 00:56
刚才测试好像很慢啊
作者: APPLEUFO 时间: 2022-1-25 22:11
应该不会慢太多,另外这个会删除空内容的文本,可以减少以后循环删除空文本的步骤,分割后的数据也会比默认的少一些
作者: ghost12 时间: 2022-5-3 04:01
感谢发布原创作品,一定好好学习,天天向上
作者: APPLEUFO 时间: 2022-10-26 01:34
|
文本模块_分割文本3 | 整数型 | |
|
参数_原始文本 | 文本型 | | | |
参数_分割用文本 | 文本型 | | | | 参数_结果数组 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
局变_找到位置 | 整数型 | | |
局变_首 | 整数型 | | |
局变_尾 | 整数型 | | |
局变_分隔符位置 | 模块_游标 | | 0 |
局变_游标 | 模块_游标 | | |
n1 | 整数型 | | |
如果真 (取文本长度 (参数_原始文本
) = 0
)
返回 (0
)
局变_找到位置 =
寻找文本 (参数_原始文本, 参数_分割用文本, ,
假)
如果真 (局变_找到位置 = -1
)
返回 (0
)
清除数组 (参数_结果数组
)
循环判断首 ()
局变_首 =
寻找文本 (参数_原始文本, 参数_分割用文本, 局变_尾 + 1,
假)
如果 (局变_首 = -1
)
跳出循环 ()




局变_尾 = 局变_首 +
取文本长度 (参数_分割用文本
) - 1


局变_游标.首 = 局变_首


局变_游标.尾 = 局变_尾

加入成员 (局变_分隔符位置, 局变_游标
)

循环判断尾 (真)
计次循环首 (取数组成员数 (局变_分隔符位置
), n1
)
如果 (n1 = 1
)
加入成员 (参数_结果数组,
文本模块_取文本中间_位置 (参数_原始文本, 1, 局变_分隔符位置
[n1
].首 - 1
))




加入成员 (参数_结果数组,
文本模块_取文本中间_位置 (参数_原始文本, 局变_分隔符位置
[n1 - 1
].尾 + 1, 局变_分隔符位置
[n1
].首 - 1
))


计次循环尾 ()加入成员 (参数_结果数组,
文本模块_取文本中间_位置 (参数_原始文本, 局变_分隔符位置
[取数组成员数 (局变_分隔符位置
)].尾 + 1,
取文本长度 (参数_原始文本
))
) 返回 (取数组成员数 (参数_结果数组
))
.版本 2
.数据类型 模块_游标, 公开, 游标是一个类似"点",有横坐标,纵坐标的数据类型,游标则有首,尾组成,取自丈量长度的游标卡尺
.成员 首, 整数型
.成员 尾, 整数型
新的 修复bug
作者: APPLEUFO 时间: 2022-10-28 00:23
.版本 2
.支持库 spec
.子程序 文本模块_分割文本3, 整数型, 公开
.参数 参数_原始文本, 文本型
.参数 参数_分割用文本, 文本型
.参数 参数_结果数组, 文本型, 数组,
.局部变量 局变_找到位置, 整数型
.局部变量 局变_首, 整数型
.局部变量 局变_尾, 整数型
.局部变量 局变_分隔符位置, 模块_游标, , "0"
.局部变量 局变_游标, 模块_游标
.局部变量 n1, 整数型
.局部变量 局变_结尾, 整数型, , , 用于开始和结束的边界变量
.如果真 (取文本长度 (参数_原始文本) = 0)
返回 (0)
.如果真结束
局变_找到位置 = 寻找文本 (参数_原始文本, 参数_分割用文本, , 假)
.如果真 (局变_找到位置 = -1)
返回 (0)
.如果真结束
清除数组 (参数_结果数组)
.循环判断首 ()
局变_首 = 寻找文本 (参数_原始文本, 参数_分割用文本, 局变_尾 + 1, 假)
.如果 (局变_首 = -1)
跳出循环 ()
.否则
局变_尾 = 局变_首 + 取文本长度 (参数_分割用文本) - 1
局变_游标.首 = 局变_首
局变_游标.尾 = 局变_尾
加入成员 (局变_分隔符位置, 局变_游标)
.如果结束
.循环判断尾 (真)
.计次循环首 (取数组成员数 (局变_分隔符位置), n1)
.如果 (n1 = 1)
.如果 (局变_分隔符位置 [n1].首 - 1 = 0) ' 开始的边界
' 不用添加一个空文本了
.否则
加入成员 (参数_结果数组, 文本模块_取文本中间_位置 (参数_原始文本, 1, 局变_分隔符位置 [n1].首 - 1))
.如果结束
.否则
加入成员 (参数_结果数组, 文本模块_取文本中间_位置 (参数_原始文本, 局变_分隔符位置 [n1 - 1].尾 + 1, 局变_分隔符位置 [n1].首 - 1))
.如果结束
.计次循环尾 ()
局变_结尾 = 局变_分隔符位置 [取数组成员数 (局变_分隔符位置)].尾 + 1 ' 这里是结尾
.如果 (局变_结尾 ≥ 取文本长度 (参数_原始文本))
' 无动作 不用添加了/// = 是一样长,大于是一样长且超过末尾文本长度了
.否则
加入成员 (参数_结果数组, 文本模块_取文本中间_位置 (参数_原始文本, 局变_结尾, 取文本长度 (参数_原始文本))) ' 最后一个' 这里待会看看
.如果结束
调试输出 (局变_分隔符位置 [取数组成员数 (局变_分隔符位置)].尾 + 1, , 取文本长度 (参数_原始文本))
返回 (取数组成员数 (参数_结果数组))
新的,不快能用就是了
欢迎光临 精易论坛 (https://125.confly.eu.org/) |
Powered by Discuz! X3.4 |