递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 1629|回复: 0
打印 上一主题 下一主题

[视窗] 文本_逐行分割

[复制链接]

86

主题

947

帖子

4884

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4884
跳转到指定楼层
楼主
发表于 2024-5-17 17:54:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时候为了逐行读取,而分割到数组,必要性不大.所以写了这个~


<火山程序 类型 = "通常" 版本 = 1 />

方法 文本_逐行分割 <公开 静态 类型 = 逻辑型 注释 = "判断循环 (文本_逐行分割 (一行文本, 要处理的文本, \",\"))"
        注释 = "如果中途有跳出循环,务必使用: 置文本标记值 (返回一行文本, 0)" 折叠>
参数 返回一行文本 <类型 = 文本型 注释 = "必须是变量  该变量的标记值,将会被占用! 刚开始时,请确保标记值为0">
参数 要分割的文本 <类型 = 文本型 注释 = "">
参数 分割符 <类型 = 文本型 @默认值 = "\r\n">
{
    变量 尾部位置 <类型 = 整数>
    变量 起始位置 <类型 = 整数>
    变量 列数 <类型 = 整数>
    变量 获取长度 <类型 = 整数>
    如果 (文本是否为空 (分割符))  // 防止空文本时,出现死循环~
    {
        返回 (假)
    }

    起始位置 = (整数)取文本标记值 (返回一行文本)
    清空文本 (返回一行文本)
    如果 (起始位置 == -1)
    {
        置文本标记值 (返回一行文本, 0)  // 恢复默认标记值
        返回 (假)
    }
    如果 (起始位置 == 0 && 取文本预分配字符数 (返回一行文本) == 0)
    {
        置文本预分配字符数 (返回一行文本, 5 * 1024)  // 事先分配内存,加快处理速度~
    }
    尾部位置 = 寻找文本 (要分割的文本, 分割符, 起始位置)
    如果 (尾部位置 == -1)
    {
        如果 (起始位置 == 0)  // 整个文本都没有分割符...
        {
            置文本 (返回一行文本, 要分割的文本)
            置文本标记值 (返回一行文本, -1)
            返回 (真)
        }
        获取长度 = 取文本长度 (要分割的文本) - 起始位置  // 获取后面所有的~
        文本类.添加部分文本指针内容 (返回一行文本, 取文本指针 (要分割的文本) + 起始位置 * 取数据类型尺寸 (字符), 获取长度)  // 置文本 (返回文本, 取文本中间 (要处理的文本, 起始位置, 获取长度))
        置文本标记值 (返回一行文本, 选择 (获取长度 > 0, -1, 0))
        返回 (获取长度 > 0)
    }
    否则
    {
        获取长度 = 尾部位置 - 起始位置  // 获取中间部分
        文本类.添加部分文本指针内容 (返回一行文本, 取文本指针 (要分割的文本) + 起始位置 * 取数据类型尺寸 (字符), 获取长度)  // 置文本 (返回文本, 取文本中间 (要处理的文本, 起始位置, 获取长度))
        置文本标记值 (返回一行文本, 尾部位置 + 取文本长度 (分割符))
        返回 (真)
    }

}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-23 16:50 , Processed in 0.075866 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表