递归火山软件开发平台

标题: 文本_逐行分割 [打印本页]

作者: 小蜗牛    时间: 2024-5-17 17:54
标题: 文本_逐行分割
有时候为了逐行读取,而分割到数组,必要性不大.所以写了这个~


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

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

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

}







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