小蜗牛 发表于 2024-5-17 17:54:10

文本_逐行分割

有时候为了逐行读取,而分割到数组,必要性不大.所以写了这个~


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

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

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

}


页: [1]
查看完整版本: 文本_逐行分割