递归火山软件开发平台

标题: 有关文本类操作 [打印本页]

作者: Q624353765    时间: 2023-12-5 12:59
标题: 有关文本类操作
有一段很长的文本,需要每5字符插入一个回车符,我是用一个大循环一个一个插入,但这种方法太耗时间了,有没有一种方法一次插入的,速度要快

作者: Xelloss0618    时间: 2023-12-5 14:17
可以试下这个,优化的重点是将分配内存的次数降到最低。


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

方法 间隔插入指定文本 <公开 静态>
参数 原始文本 <类型 = 文本型 注释 = "所欲插入内容的文本">
参数 结果文本 <类型 = 文本型 注释 = "插入结果返回到此参数">
参数 插入内容 <类型 = 文本型 注释 = "所欲插入的内容" @默认值 = "\r\n">
参数 插入间隔 <类型 = 整数 注释 = "每隔多少个字符插入指定的内容" @默认值 = 5>
{
    清空文本 (结果文本)
    变量 文本长度 <类型 = 整数>
    变量 文本指针 <类型 = 变整数>
    文本长度 = 取文本长度 (原始文本)
    文本指针 = 取文本指针 (原始文本)
    如果 (文本长度 < 插入间隔)
    {
        置文本指针 (结果文本, 文本指针)
        返回
    }
    变量 循环次数 <类型 = 整数>
    循环次数 = 文本长度 / 插入间隔
    置文本预分配字符数 (结果文本, 文本长度 + (循环次数 + 1) * 取文本长度 (插入内容))
    计次循环 (循环次数)
    {
        添加部分文本指针内容 (结果文本, 文本指针, 插入间隔)
        加入文本 (结果文本, 插入内容)
        文本指针 = 文本指针 + 插入间隔 * 2
    }
    如果 (文本长度 % 插入间隔 > 0)
    {
        添加文本指针内容 (结果文本, 文本指针)
    }
}

作者: Q624353765    时间: 2023-12-5 17:44
Xelloss0618 发表于 2023-12-5 14:17
可以试下这个,优化的重点是将分配内存的次数降到最低。

(, 下载次数: 17)

速度提高好多倍,小修改了下

作者: 承易    时间: 2023-12-5 17:51
此时此刻才体现了火山C++的威力
作者: Xelloss0618    时间: 2023-12-5 17:53
Q624353765 发表于 2023-12-5 17:44
速度提高好多倍,小修改了下

返回文本型会多复制一次内存,不过看你喜欢了




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