System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于数据处理,尤其涉及一种适用于字符串的纯文本格式数据的无损压缩方法和系统。
技术介绍
1、在计算机程序中,常使用纯文本格式的字符串,来保存配置信息。在有些场合的这类配置信息中,邻近的字符串具有相同的前缀,即在两个字符串中,开头的一个或多个字符是相同的。这种在一个字符串的头部,与另一个字符串的头部,完全相同的一个或多个字符,我们称之为相同的前缀。例如“abcxyz”与“abcijk”这两个字符串,它们各自头部都有“abc”,那么“abc”就是这两个字符串之间相同的前缀。
2、发布web网站代码时,通常会在源代码的文件名后面,附加一串md5值,以防止与历史版本文件重名。在文件名被附加md5串后,为了记录文件名改变前后的对应关系,现有的做法通常是用一份纯文本格式的配置数据,来表示这种对应信息。这种配置数据的文件名之间,有相同的前缀,可以视为冗余信息来做针对性的压缩。
3、具有类似特征的数据,还有多语言词典数据。现有技术方案常用的做法是,以文案所在的项目、模块、页面和功能点,对文案进行分级分类编号,然后记录编号和多语言译文的对应关系。在同一个模块或页面中,常有多个文案需要编号,这些相邻的编号之间,有相同的前缀,即命名空间的概念。
4、现有的做法虽然能够实现文件的压缩,但是压缩过程较为复杂,并不适合嵌入到脚本型代码中,随源代码一起发布压缩数据。
技术实现思路
1、为解决上述技术问题,本专利技术提出一种适用于字符串的纯文本格式数据的无损压缩方法和
2、本专利技术第一方面公开了一种适用于字符串的纯文本格式数据的无损压缩方法,方法包括:
3、步骤s1、定义一个临时变量t,并将待压缩数据中第a行字符串赋值给临时变量t;
4、步骤s2、从待压缩数据中,取出第a+1行字符串赋值给变量s;
5、步骤s3、找到变量s与临时变量t之间相同的前缀,将相同的前缀赋值给变量p;
6、步骤s4、将第a+1行字符串赋值给临时变量t;
7、步骤s5、将第a+1行字符串的开头与变量p相同的部分,替换成变量p的长度值n,作为这一行的压缩结果;
8、步骤s6、重复步骤s2至步骤s5对待压缩数据进行逐行处理,直至待压缩数据的所有字符串全部处理完毕。
9、根据本专利技术第一方面的方法,在步骤s5中,n的值用两位三十六进制字符表示。
10、根据本专利技术第一方面的方法,当n等于0时,在步骤s5中,第a+1行字符串的压缩结果为在原字符串前面增加00字符。
11、根据本专利技术第一方面的方法,在步骤s1中,当a等于0时,将临时变量t赋值为空字符串。
12、根据本专利技术第一方面的方法,在步骤s6之后还包括:
13、步骤s7、对压缩后的待压缩数据进行解压。
14、根据本专利技术第一方面的方法,在步骤s7中对压缩后的待压缩数据进行解压的方法包括:
15、步骤s71、定义一个临时变量y,并将临时变量y赋值为空字符串;
16、步骤s72、从待解压数据中,取出压缩后的第a+1行字符串,赋值给变量x;
17、步骤s73、将变量x的前两个字符以数值的形式赋予变量m,m的值表示第a+1行字符串与第a行字符串相同前缀的长度;
18、步骤s74、取出临时变量y的前m个字符,替换掉变量x的前两个字符,作为这一行的解压缩结果;
19、步骤s75、将步骤s74的解压缩结果赋值给临时变量y,用于解压缩下一行;
20、步骤s76、重复步骤s72至步骤s75对待解压数据进行逐行处理,直至待解压数据全部处理完毕。
21、根据本专利技术第一方面的方法,在步骤s7中,当a等于0时,直接将首行的前两个字符删除作为首行的解压缩结果。
22、本专利技术第二方面公开了一种适用于字符串的纯文本格式数据的无损压缩系统;系统包括:
23、第一处理模块,被配置为,定义一个临时变量t,并将待压缩数据中第a行字符串赋值给临时变量t;
24、第二处理模块,被配置为,从待压缩数据中,取出第a+1行字符串赋值给变量s;
25、第三处理模块,被配置为,找到变量s与临时变量t之间相同的前缀,将相同的前缀赋值给变量p;
26、第四处理模块,被配置为,将第a+1行字符串赋值给临时变量t;
27、第五处理模块,被配置为,将第a+1行字符串的开头与变量p相同的部分,替换成变量p的长度值n,作为这一行的压缩结果;
28、第六处理模块,被配置为,重复第二处理模块至第五处理模块中的无损压缩方法,对待压缩数据进行逐行处理,直至待压缩数据的所有字符串全部处理完毕。
29、综上,本专利技术提出的方案:待压缩的数据是纯文本格式,压缩后的数据也是纯文本格式;压缩过程简单开销小,压缩结果是纯文本,适合嵌入到脚本型代码中,随源代码一起发布压缩数据;前缀字符串长度可用两位36进制数表示,直接由javascript内置库函数支持,所能表示的前缀长度值最多可达1295。
本文档来自技高网...【技术保护点】
1.一种适用于字符串的纯文本格式数据的无损压缩方法,其特征在于,所述方法包括:
2.根据权利要求1所述的一种适用于字符串的纯文本格式数据的无损压缩方法,其特征在于,在所述步骤S5中,所述n的值用两位三十六进制字符表示。
3.根据权利要求2所述的一种适用于字符串的纯文本格式数据的无损压缩方法,其特征在于,当n等于0时,在所述步骤S5中,所述第a+1行字符串的压缩结果为在原字符串前面增加00字符。
4.根据权利要求1至3中任一项所述的一种适用于字符串的纯文本格式数据的无损压缩方法,其特征在于,在所述步骤S1中,当a等于0时,将所述临时变量t赋值为空字符串。
5.根据权利要求1至3中任一项所述的一种适用于字符串的纯文本格式数据的无损压缩方法,其特征在于,在所述步骤S6之后还包括:
6.根据权利要求5所述的一种适用于字符串的纯文本格式数据的无损压缩方法,其特征在于,在所述步骤S7中对压缩后的所述待压缩数据进行解压的方法包括:
7.根据权利要求6所述的一种适用于字符串的纯文本格式数据的无损压缩方法,其特征在于,当a等于
8.一种适用于字符串的纯文本格式数据的无损压缩系统,其特征在于,所述系统包括:
...【技术特征摘要】
1.一种适用于字符串的纯文本格式数据的无损压缩方法,其特征在于,所述方法包括:
2.根据权利要求1所述的一种适用于字符串的纯文本格式数据的无损压缩方法,其特征在于,在所述步骤s5中,所述n的值用两位三十六进制字符表示。
3.根据权利要求2所述的一种适用于字符串的纯文本格式数据的无损压缩方法,其特征在于,当n等于0时,在所述步骤s5中,所述第a+1行字符串的压缩结果为在原字符串前面增加00字符。
4.根据权利要求1至3中任一项所述的一种适用于字符串的纯文本格式数据的无损压缩方法,其特征在于,在所述步骤s1中,当a等于0时,将所述临...
【专利技术属性】
技术研发人员:谢世威,钟兴,
申请(专利权)人:深圳市纷享互联科技有限责任公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。