CN113676186A - 一种针对字符串的估算定位方法和系统 - Google Patents
一种针对字符串的估算定位方法和系统 Download PDFInfo
- Publication number
- CN113676186A CN113676186A CN202010404855.6A CN202010404855A CN113676186A CN 113676186 A CN113676186 A CN 113676186A CN 202010404855 A CN202010404855 A CN 202010404855A CN 113676186 A CN113676186 A CN 113676186A
- Authority
- CN
- China
- Prior art keywords
- character string
- string
- source
- code
- replacement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000004458 analytical method Methods 0.000 claims abstract description 72
- 238000013515 script Methods 0.000 claims abstract description 6
- 238000003860 storage Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 12
- 230000000694 effects Effects 0.000 abstract description 6
- 230000005540 biological transmission Effects 0.000 abstract description 3
- 230000004044 response Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 15
- 230000008859 change Effects 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 12
- 238000007906 compression Methods 0.000 description 7
- 230000014509 gene expression Effects 0.000 description 7
- 230000006835 compression Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
- H03M7/3064—Segmenting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及计算机领域,尤其涉及一种针对字符串的估算定位方法和系统。现代的脚本语言,压缩后的较小的代码文件在同等的网络条件下传输速度更快和占用更小空间,更好的反应速度。同时压缩后的脚本具有混淆效果。压缩后的代码,系统报错位置是压缩后的位置,人工不能通过错误信息在源代码中定位错误。本发明公开一种针对字符串的估算定位方法,源字符串完成预期的替换操作,获取所述替换信息集合,获取第一分析位置,通过替换信息集合。将所述第一分析位置更新为第一估算位置;基于所述第一估算位置对所述源字符串的进行标记。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种针对字符串的估算定位方法和系统。
背景技术
现代的脚本语言Vbscript、Javascript、Python等,其表达形式皆为字符串。这种以字符串为载体的语言代码,压缩后的较小的代码文件在同等的网络条件下传输速度更快和占用更小空间,更好的反应速度。同时压缩后的脚本具有混淆效果。已知的压缩JavaScript方法:去掉注释,回车,多余的空格,代码压为一行;方法、变量重命名为几个字符组合。
带来问题:压缩后的代码,系统报错是压缩后的代码元素名(变量/函数名称),报错位置是压缩后的位置,人工不能通过错误信息在源代码中定位错误,降低分析并修复错误的效率。
发明内容
为解决上述问题,本发明公开一种针对字符串的估算定位方法,包括:获取源字符串,所述源字符串包括单位字符串;对上述源字符串替换操作用以生成目标字符串;所述替换操作包括子操作;所述子操作包括,步骤A、于所述源字符串的第一位置获取第一单位字符串;步骤B、获取第一替换字符串,所述第一替换字符串于所述第一位置用以替换所述第一单位字符串;步骤C、获取信息对,所述信息对包括所述第一位置和对应的所述第一单位字符串与所述第一替换字符串的长度差;上述源字符串完成预期的替换操作,生成并发布所述目标字符串;获取并保存包括所述信息对的替换信息集合;获取所述目标字符串上的第一分析位置,所述第一分析位置处有第一分析子字符串;获取并解析所述替换信息集合用以获取所述替换信息集合中的所有合规信息对;所述合规信息对为包括的解析出来的所述位置值不大于动态更新的所述第一分析位置的所述信息对;将所有合规信息对的长度差累加到所述第一分析位置并及时更新所述第一分析位置;取更新后的所述第一分析位置为第一估算位置;获取所述源字符串,基于所述源字符串的所述第一估算位置进行标记。
优化的,所述基于所述源字符串的所述第一估算位置进行标记为:基于所述第一估算位置,于所述源字符串的尾端方向搜索并记录合乎预定的约束条件的尾字符;基于所述第一估算位置,于所述源字符串的首端方向搜索并记录合乎所述预定的约束条件的首字符;获取上述搜索获得的所述尾字符和首字符所限定的与所述第一分析子字符串的相关联的单位字符串并标记和/或输出。
优化的,所述基于所述源字符串的所述第一估算位置进行标记为:基于所述第一估算位置,搜索符合预定规则的语义单元的头部与尾部并标示所述语义单元的头部与尾部之间的局部字符串。
优化的,所述源字符串为源代码的字符串化;所述第一单位字符串为第一元素名;
所述目标字符串为机器可识别代码字符串;所述获取所述目标字符串上的第一分析位置为获取所述机器可识别代码字符串在运行中发生错误时候的所提示的错误报告包含的第一分析位置;所述替换信息集合的保存方式是:将所述替换信息集合记录于第三字符串中,并将所述第三字符串以相应的所述源代码或机器可识别代码的注释的形式附加于所述代码字符串末尾处并保存所述代码,或,将所述替换信息集合以指定的文件的形式保存到本地或服务器。
优化的,针对所述注释形式的所述替换信息集合,所述注释中包含用于标识所述替换信息集合的特征字符串。
优化的,还包括表征所述源代码字符串和对应所述机器可识别代码字符串的对应关系的代码字符串ID号;所述代码字符串ID号由系统生成或人为指定;所述代码字符串ID号以注释的形式附加到所述源代码字符串和所述机器可识别代码字符串末端,用以识别所述源代码字符串和所述机器可识别代码字符串是否为相互对应。
优化的,所述第一单位字符串包括注释、空格和/或回车符;所述第一替换字符串包括空字符串;所述源代码包括JavaScrip或VBScript脚本语言代码;所述元素名包括:局部变量名、方法名、函数名、常量;所述发布包括机器识别、判断、执行、调试;
一种估算定位系统,其特征为,包括:第一模块,用于获取源字符串,所述源字符串包括单位字符串;第二模块,用于对上述源字符串进行替换操作,用以生成目标字符串;所述第二模块至少包括子模块A,子模块B,子模块C,子模块D,子模块E;所述子模块A,用于于所述源字符串的第一位置获取第一单位字符串;所述子模块B,用于获取第一替换字符串,所述第一替换字符串于所述第一位置用以替换所述第一单位字符串;所述子模块C,用于获取第一把信息对,所述第一信息对包括所述第一位置和对应的所述第一单位字符串与所述第一替换字符串的长度差;所述子模块D,用于上述源字符串完成预期的替换操作,来生成并发布所述目标字符串;所述子模块E,用于获取并保存包括所述第一信息对的替换信息集合;第三模块,用于获取所述目标字符串上的第一分析位置,所述第一分析位置处有第一分析子字符串;第四模块,用于获取并解析所述替换信息集合用以获取所述替换信息集合中的所有合规信息对,所述合规信息对为包括的解析出来的所述位置值不大于动态更新的所述第一分析位置的所述信息对;第五模块,用于将所有合规信息对的长度差累加到所述第一分析位置并及时更新所述第一分析位置,取更新后的所述第一分析位置为第一估算位置;第六模块,用于获取所述源字符串,基于所述第一估算位置标记所述源字符串。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现所述方法的步骤。
一种压缩代码的方法,其特征为,所述方法包括:获取第一源代码;获取所述第一源代码中的第一字符串,生成包含所述第一字符串的第一字符串集合;获取第二源代码;基于所述第一字符串集合,于所述第二源代码中获取并确认所述第一字符串集合中的所期望的所述第一字符串。
本发明的技术效果:
提供一种包含的特定的单词被替换后的字符串的定位信息的新方法;提供一种被压缩代码中定位错误信息的新方法;减少辅助信息量,节约空间,提高效率等优点。
附图说明
图1是本发明第一实施例的界面图。
图2是本发明第一实施例的流程图。
图3是本发明第二实施例的系统结构图。
图4是本发明第二实施例的第二模块的系统结构图。
图5是本发明第Y一实施例的流程图。
图6是本发明第Y二实施例的系统结构示意图。
图7是本发明第Y二实施例的第二模块的系统结构示意图。
图8是本发明第Y二实施例的第四模块的系统结构示意图。
具体实施方式
第一实施例见图1、图2。以JavaScript为例详述本发明实施例中的技术方案。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
一种针对字符串的估算定位方法,所述估算定位方法针对被压缩代码字符串的单位字符串的定位及分析有效。
ST001获取源字符串702 ,所述源字符串702 为源代码的字符串化。
获取JavaScrip脚本语言代码为源代码,序列化为至少由单位字符串构成的源字符串702 。源代码中的单位字符串即为单词形式的一段字符串。
对应不同约束条件a-b-c、a_b_c、abc可分别是或不是单位字符串。
例如,所述单位字符串的约束条件为:
具有可识别的首端和尾端,即具有符合预定规则的首字符和尾字符的字符串;首端为第一个可见字符,末端为最后一个可见字符;首尾字符正则表达式的定义可为\b [_a-zA-Z]和[_a-zA-Z]\b;
首端不可为标点符号运算符号;所述单位字符串不包含空格、标点及不可见字符,各个字符满足预定的成词规范。所述Javascript语言中的变量名、属性名、函数名、常量或其他关键词皆为所述单位字符串。
ST002转换源字符串。
所述字符串位置为子字符串的首字符在其父字符串中的序号位置(顺序位置);所述字符串长度为字符串的所有字符(可见或不可见字符)的数量;所述单位字符串的跨度:以所述首字符和尾字符的位置值为端点的字符串位置序号的闭集;所述信息对包括位置值,长度差值,形如(posation,di STance)。
对上述源字符串702 替换操作用以生成目标字符串,所述目标字符串为机器可识别代码字符串。
所述替换操作包括子操作,所述子操作包括,
步骤A、于所述源字符串702 的第一位置获取第一单位字符串;
步骤B、获取第一替换字符串,所述第一替换字符串于所述第一位置用以替换所述第一单位字符串;
步骤C、获取信息对,所述信息对包括所述第一位置和对应的所述第一单位字符串与所述第一替换字符串的长度差。
即为:对应于所述第一位置处,将所述第一单位字符串替换为第一替换字符串,并获取所述第一单位字符串与第一替换字符串的长度差Da_b,所述长度差Da_b为所述第一单位字符串与第一替换字符串的长度的具有正负属性的数学差。
所述第一替换字符串为随机算法生成的随机字符串,相当于压缩混淆所述源代码。所述第一单位字符串或为注释、空格和/或回车符,所述第一替换字符串包括空字符串,相当于删除源代码中的注释、空格和/或回车符,将所述源代码压缩成单行的字符串形式。
所述替换操作执行序列包括如下形式:
例如源字符串702‘Key1 efg Key2 lmnop’中,'Key1'与'Key2'为预期替换的单位字符串,第一位置为‘0’对应‘Key1’,第二位置为‘9’对应‘Key2’。
第一种替换形式,替换操作的触发顺序可以是从源字符串702的首端向尾端,即以升序的方式进行替换操作:
获取‘Key1’,生成‘K1’替换‘Key1’,记录第一信息对为(0,2),源字符串702 变为'K1efg Key2 lmnop';获取'Key2',生成'K2'替换'Key2',记录第二信息对为(7,2),源字符串702 变为'K1 efg K2 lmnop',其中信息对中的位置会因前面的替换改变,在后面的解析过程中,对这个改变的位置值进行修正。
第二种替换形式,将替换操作的触发顺序可以是从源字符串702 的尾端向首端,降序方式进行替换操作,从所述源字符串702 的尾端为起点搜索:
获取'Key2',生成'K2'替换'Key2',记录第二信息对为(9,2),源字符串702 变为'Key1efg K2 lmnop'。
获取'Key1',生成'K1'替换'Key1',记录第一信息对为(0,2),源字符串702 变为'K1 efg K2 lmnop'。
所述替换操作的所述子操作可为原子操纵,所述原子操纵包括于所述字符串位置获取所述单位字符串,获取所述替换字符串、获取并保存信息对、以替换字符串替换单位字符串在一个时间序列中完成。
所述子操作可相互在不同的执行序列中完成:
搜索序列:搜索期望的单位字符串,记录单位字符串位置;
生成序列:为各个单位字符串生成并记录替换字符串;
替换序列:依照记录将所述单位字符串替换为对应的替换字符串;
下面提供一种优化方案。
所述源字符串702 以相应的代码文件为载体,解析源字符串702 为字节数组Ar,所述字节数组Ar中具有数据元素Ar[a]与所述第一单位字符串对应。另设一个变化标识量字节数组flg,该字节数组flg的元素与字节数组Ar元素一一对应,所述数据元素Ar[a]具有对应的变化标识量flg[a];所述数据元素Ar[a]可为单个字符或为一段与所述单位字符串对应的字符串,或Ar[a+0]……Ar[a+i],其中(0<= i,a <=字节数组Ar的长度 - 1 )代表所述单位字符串,根据情况设置即可,变化标识量flg也对应做出同样的设置。
所述替换所述源字符串702 中的第一单位字符串为所述第一替换字符串为:
在所述变化标识量flg[a]中标识出所述第一单位字符串替换为所述第一替换字符串,同时或延后,所述数据元素Ar[a]替换为所述第一替换字符串的相应内容。例如,所述变化标识量flg[a+i]的值代表意义为:0标识Ar[a+i]未动,1标识Ar[a+i]删除,2标识Ar[a+i]内容已经变化等。
所述单词的位置为单词的首字符在字节数组Ar中的顺序号。
一种情况为:所述第一单位字符串为代码的自定义的类名、变量名、常量名,而所述第一替换字符串为a、b、c等随机字符串,等于一般意义的混淆代码。
另一种情况为:所述第一单位字符串为代码的注释、多余的空格、回车等无执行功能的字符串STrNote,而所述第一替换字符串空字符null,即相当于特定的单位字符串替换为空值,等于一般意义的压缩代码。所述长度差Da_b为字符串STrNote的长度。此步骤作为优化的方案,在所述替换信息集合703生成之前实施较好。在其他的所述单位字符串的替换之前实施更优。
去除所述源字符串702 的注释、空格和/或回车符,即在相应的变化标识量做出删除标记。
在字节数组Ar中发现数据元素Ar[x] 其中(0<= x <=字节数组Ar的长度 - 1 )对应的所述注释、空格和/或回车符,所述数据元素Ar[x]对应具有所述变化标识量flg[x],所述去除注释、空格和/或回车符为在对应的所述变化标识量flg[x]上作出删除标记。如此压缩之后的后源代码可以只有一行。
ST003生成目标代码字符串和转换信息
按照预定的规则完成预期的对源字符串702 的替换操作,将替换后的所述源字符串702写入第二字符串,生成机器可识别代码字符串706并发布到服务器上供用户调取使用。所述发布还包括机器识别、判断、交付执行、调试。
生成所述机器可识别代码字符串706的过称:
遍历所述字节数组Ar中的数据元素Ar[i]和其所对应的所述变化标识量flg[i],按照预定的规则基于上述的数据元素Ar[i]和其所对应的所述变化标识量flg[i]的值对所述源字符串702 编辑形成所述机器可识别代码字符串706。遍历所述变化标识量flg字节数组,flg[i]的值为删除,则略过对应的数据元素Ar[i],flg[i]的值为替换,则按照指针读取新的字符串内容写入所述目标字符串,flg[i]的值为原始未动,从字节数组Ar读取字符串内容写入所述目标字符串。写入操作完成,所述目标字符串即为所述机器可识别代码字符串706。
重要的,按照预定的规则生成并保存所述源字符串702 的至少包括所述信息对的替换信息集合703。所述信息对记录所述替换发生位置和与其对应的长度差Da_b。替换的同时考虑所述变化标识量flg[a],并基于所述变化标识量flg[a]记录所述单位字符串替换所发生的位置和所述替换前后的单位字符串的长度差。例如,在顺序号i处发现单词形式的单位字符串A,把单位字符串A替换为单位字符串B,记录顺序号i和单位字符串A和单位字符串B的长度差,把全部发生的替换的相应的数据(i,长度差)记录在所述替换信息集合703中,即为所求。
所述替换信息集合703记录所有发生的替换所对应的信息对,其格式:
替换位置1,单位字符串增量1,单位字符串1;替换位置2,单位字符串增量2,单位字符串2;等。或简化为替换位置1,单位字符串增量1;替换位置2,单位字符串增量2;……减少了资源辅助文件的体积。所述长度差理解为所述单位字符串增量。
ST004保存转换信息
与上步骤紧密结合,获取并保存包括所有发生的替换所对应的所述信息对的替换信息集合703,其保存方式是:
将所述替换信息集合703记录于第三字符串中,并将所述第三字符串以相应的所述源字符串702 或机器可识别代码字符串706的注释的形式附加于所述代码末尾处并保存,或,将所述替换信息集合703以指定的文件的形式保存到本地或服务器;。
具体为:
所述替换信息集合703解析为位置增量信息字符串。按照一个预先定义的格式把明文形式的位置增量信息字符串组合成一个注释N,将所述注释N添加到源字符串702 文件末尾,合并生成带位置增量信息的第二源代码文件,再保存所述第二源代码文件。
针对所述注释形式的所述替换信息集合703,所述注释中包含用于标识所述替换信息集合703的特征字符串701。
在符合代码文件的规范的前提下,所述预先定义的格式可以由本领域技术人员自行定义。
注释的用处有很多,比如:方便查找、比对、它人了解此代码、理解与修改代码等。
JavaScript文件的注释:/*注释信息*/ 或//注释信息。
位置增量信息字符串加入到对应的代码文件中:
JavaScript:
.........代码文件内容........
// LMC_DEBUG:明文形式的位置增量信息字符串1
// LMC_DEBUG:明文形式的位置增量信息字符串2
……
或
/* LMC_DEBUG:明文形式的位置增量信息字符串*/
其中,LMC_DEBUG为所述特征字符串701。
优点:
简单方便地实现代码文件内容的定位计算;将所述位置增量信息保存到原始代码中,方便管理,提高效率;一次的文件的保存命令,就可以保存代码文件的所有信息,包括位置增量信息,不需要占用额外的时间;放到代码的末端不影响代码文件此前部位的定位运算;任何浏览器、编辑器都可以正常使用并加载此文件,提高了代码文件的兼容性。不支持本发明的代码文件定位计算方案的浏览器、编辑器,可将定位信息解读为一般注释内容而不进行处理,正常加载即可也不会影响代码文件的正常显示、代码文件加载速度,提升了用户使用体验。
还包括作为所述替换信息集合703的一个部分保存或单独作为一个注释保存在代码字符串中的表征所述源代码字符串和对应的所述机器可识别代码字符串的对应关系的代码字符串ID号,优化的是,相互对应的所述源代码字符串和所述机器可识别代码字符串具有相同的代码字符串ID号;
所述代码字符串ID号由系统可采用伪随机算法生成或人为指定;
生成所述机器可识别代码字符串706和所述替换信息集合703时,所述代码ID以注释的形式附加到所述替换信息集合703(或所述源字符串702 )末端和对应的机器可识别代码字符串706末端,用以识别所述源代码字符串和所述机器可识别代码字符串是否为相互对应的。
ST005获取所述机器可识别代码字符串706的错误报告。
所述分析字符串为需要分析其状态的子字符串,所述状态包括其在所述源字符串702 中的源和上下文环境;所述分析子字符串可以为所述第一替换字符串或没有发生替换的所述源字符串702 中原有的单位字符串;所述分析位置为所述分析字符串于所述目标字符串中的位置。
获取所述目标字符串上的第一分析位置,所述第一分析位置处有第一分析子字符串,所述获取所述目标字符串上的第一分析位置为获取所述机器可识别代码字符串在运行中发生错误时候的所提示的错误报告包含的第一分析位置。一般情况下,所述第一分析位置为程序代码运行时系统报告的需要调试的位置。
具体为:
将所述机器可识别代码字符串706发布到服务器上,获取所述机器可识别代码字符串706在运行中发生错误时候的错误报告。报告中包含的是压缩或混淆后的代码环境的出错信息,包括错误位置和错误的单位字符串等。错误位置一般为代码字符串的顺序位置。
ST006所述源字符串702中复原错误发生位置。
获取并解析所述替换信息集合703用以获取所述替换信息集合中的所有合规信息对。
为获取明文形式的位置增量信息字符串,首先寻找代码文件末尾的注释信息,如果找到了,并且符合/*LMC_DEBUG:XXXXX*/,那么提取出XXXXX,就是对应的位置增量数据,将所述位置增量数据解析为所述替换信息集合703。
累加信息对方式求估算位置。
以循环累加的方式在替换集合中取所有所述合规信息对,将其长度差累加到分析位置来动态更新分析位置,当替换信息集合中再无符合条件的信息对,取更新后的分析位置为第一估算位置。
所述合规信息对为包括的解析出来的所述位置值不大于动态更新的所述第一分析位置的所述信息对;
将所有合规信息对的长度差累加到所述第一分析位置并及时更新所述第一分析位置;
取更新后的所述第一分析位置为第一估算位置。
具体为,所述动态更新所述第一分析位置为以循环累加长度差的形式动态更新第一分析位置:
所述替换信息集合为至少包括所述第一替换信息对的序列,替换信息对依照替换位置顺序排列。
步骤A1:取所述替换信息集合的子集,所述子集中的元素a[i]的位置值a[i].posation不大于更新后的所述第一分析位置,所述替换信息集合中删除所述子集中的元素或标注为已经使用而防止第二次使用,表示为所述替换信息集合=所述替换信息集合-所述子集;
步骤B1:判断子集是否为空,若为空,则获取所述第一分析位置为预期的第一估算位置并退出该计算步骤,若不为空,执行步骤C1;
步骤C1:将所述子集中全部的元素的长度差值加到所述第一分析位置,并更新所述第一分析位置,跳转到步骤A1。
ST007标记源
获取所述第一分析位置,填入所述分析位置输入框709中,点击定位按钮710系统将第一分析位置的值按照所述替换信息集合703执行上述的累加算法逐步递增至所期望的第一估算位置即可进行标记。
获取所述源字符串702,基于所述第一估算位置标记所述源字符串702 。
对比所述代码ID可鉴别所述源字符串702和所述机器可识别代码字符串706是否为相互对应的。或在所述机器可识别代码字符串706的末尾包括所述源代码文件的加密后的保存目录。通过特定的解密装置或算法解密所述保存目录来打开对应的源代码文件。
在所述源字符串702中定位所述第一估算位置,并基于所述第一估算位置,搜索符合预定规则的语义单元的头部与尾部并标示所述语义单元的头部与尾部之间的局部字符串。所述语义单元为具有功能特性的一段字符串,包括源代码的函数定义、类定义等。
或者,基于所述第一估算位置,分别于所述源字符串702 的首端方向和尾端方向搜索并记录合乎预定的约束条件的首字符和尾字符,获取上述搜索获得的所述尾字符和首字符所限定的与所述第一分析子字符串的相关联的单位字符串并标记显示输出。所述输出可以输出字符串量至其他应用或输出到显示框内。见图1中单位字符串712“id”,替换为替换字符串713“d”,通过分析位置输入框709中输入替换字符串713的位置“16”,系统突出显示所述单位字符串712,并输出到显示框711中。
或者将所述语义单元标识为第一外观环境,所述预期的第一单位字符串标识为第二外观主体,用来将所述第一单位字符串在所述语义单元中突出显示。外观包括字体大小、底色、字体颜色、字体种类等。
一种方案为:
所述源字符串包括所述第一单位字符串;所述第一替换字符串为随机的第二单位字符串;错误报告中的所述第一分析位置处有所述第二单位字符串;通过第一估算位置,找到所述第二单位字符串对应的第一单位字符串。上述方案对VBScript、python脚本依然有效。
第二实施例。见图1、图3、图4。
一种估算定位系统,其特征为,包括:
第一模块,用于获取源字符串,所述源字符串包括单位字符串;
第二模块,用于对上述源字符串进行替换操作,用以生成目标字符串;
所述第二模块至少包括子模块A,子模块B,子模块C,子模块D,子模块E;
所述子模块A,用于于所述源字符串的第一位置获取第一单位字符串;
所述子模块B,用于获取第一替换字符串,所述第一替换字符串于所述第一位置用以替换所述第一单位字符串;
所述子模块C,用于获取第一把信息对,所述第一信息对包括所述第一位置和对应的所述第一单位字符串与所述第一替换字符串的长度差;
所述子模块D,用于上述源字符串完成预期的替换操作,来生成并发布所述目标字符串;
所述子模块E,用于获取并保存包括所述第一信息对的替换信息集合;
第三模块,用于获取所述目标字符串上的第一分析位置,所述第一分析位置处有第一分析子字符串;
第四模块,用于获取并解析所述替换信息集合用以获取所述替换信息集合中的所有合规信息对,所述合规信息对为包括的解析出来的所述位置值不大于动态更新的所述第一分析位置的所述信息对;
第五模块,用于将所有合规信息对的长度差累加到所述第一分析位置并及时更新所述第一分析位置,取更新后的所述第一分析位置为第一估算位置;
第六模块,用于获取所述源字符串,基于所述第一估算位置标记所述源字符串。
第三实施例:
一种计算机可读存储介质,存储有机器机器可识别指令,在被处理器调用和执行时,所述机器机器可识别指令促使所述处理器:实现第一实施例所述的方法步骤。
对于系统和装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明关联一种压缩代码的方法:1、一种压缩代码的方法,其特征为,所述方法包括:获取第一源代码;获取所述第一源代码中的第一字符串,生成包含所述第一字符串的第一字符串集合;获取第二源代码;基于所述第一字符串集合,于所述第二源代码中获取并确认所述第一字符串集合中的所期望的所述第一字符串。2、根据权利要求1所述的方法,其特征为,其特征为:所述第一源代码为HTML源代码和/或CSS源代码;所述第一字符串为所述HTML源代码描述的DOM的元素的第一属性字符串;所述“生成包含所述第一字符串的第一字符串集合”还包括:适时为所述第一字符串集合中的第一字符串生成对应的第二字符串;记录所述第一字符串与第二字符串的一一对应关系;所述第二源代码为Javascript源代码和/或Vbscript源代码;所述“于所述第二源代码中获取并确认所述第一字符串集合中的所期望的所述第一字符串”包括:基于所述第一字符串集合和所述对应关系,以同步或异步的方式,在所述第一源代码和所述第二源代码中,将获取所述第一字符串替换为对应的第二字符串。3、根据权利要求2所述的方法,其特征为,其特征为:所述第一属性字符串为所述DOM元素的类名和/或ID;4、一种压缩代码的系统,其特征为,所述系统包括:第一模块,用于获取第一源代码;第二模块,用于获取所述第一源代码中的第一字符串,生成包含所述第一字符串的第一字符串集合;第三模块,用于获取第二源代码;第四模块,用于基于所述第一字符串集合,于所述第二源代码中获取并确认所述第一字符串集合中的所期望的所述第一字符串。5、根据权利要求4所述的系统,其特征为,其特征为:所述第一源代码为HTML源代码和/或CSS源代码;所述第一字符串为所述HTML源代码描述的DOM的元素的第一属性字符串;所述第一属性字符串为所述DOM元素的类名和/或ID;所述第二源代码为Javascript源代码和/或Vbscript源代码;所述第二模块还包括:第五模块,用于适时为所述第一字符串集合中的第一字符串生成对应的第二字符串;第六模块,用于记录所述第一字符串与第二字符串的一一对应关系;所述第四模块包括:第七模块,用于基于所述第一字符串集合和所述对应关系,以同步或异步的方式,在所述第一源代码和所述第二源代码中,将获取所述第一字符串替换为对应的第二字符串。6.一种服务器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现权利要求1-3任一所述的方法步骤。7.一种计算机可读存储介质,存储有机器机器可识别指令,在被处理器调用和执行时,所述机器机器可识别指令促使所述处理器:实现权利要求1-3任一所述的方法步骤。8、根据权利要求1所述的方法,其特征为,其特征为:所述第一源代码与所述第二源代码同属于一个web系统。一种压缩代码的方法及系统技术领域本发明涉及计算机技术领域,特别是涉及一种压缩代码的方法及系统。背景技术源代码会用到字符串常量,包括加解密密钥、UI界面中展示的字符、dom元素的类名、id、约定的命令等。这些字符串常量没有加密或者压缩,直接以明文的方式写在代码中,有泄密可能性且占用代码的存储空间。发明内容为解决上述问题,本发明实施例的目的在于提供一种压缩代码的方法及系统 。一种压缩代码的方法,其特征为,所述方法包括:获取第一源代码;获取所述第一源代码中的第一字符串,生成包含所述第一字符串的第一字符串集合;获取第二源代码;基于所述第一字符串集合,于所述第二源代码中获取并确认所述第一字符串集合中的所期望的所述第一字符串。优化的,所述第一源代码为HTML源代码和/或CSS源代码;所述第一字符串为所述HTML源代码描述的DOM的元素的第一属性字符串;所述“生成包含所述第一字符串的第一字符串集合”还包括:适时为所述第一字符串集合中的第一字符串生成对应的第二字符串;记录所述第一字符串与第二字符串的一一对应关系;所述第二源代码为Javascript源代码和/或Vbscript源代码;所述“于所述第二源代码中获取并确认所述第一字符串集合中的所期望的所述第一字符串”包括:基于所述第一字符串集合和所述对应关系,以同步或异步的方式,在所述第一源代码和所述第二源代码中,将获取所述第一字符串替换为对应的第二字符串。优化的,所述第一属性字符串为所述DOM元素的类名和/或ID;一种压缩代码的系统,其特征为,所述系统包括:第一模块,用于获取第一源代码;第二模块,用于获取所述第一源代码中的第一字符串,生成包含所述第一字符串的第一字符串集合;第三模块,用于获取第二源代码;第四模块,用于基于所述第一字符串集合,于所述第二源代码中获取并确认所述第一字符串集合中的所期望的所述第一字符串。优化的,所述第一源代码为HTML源代码和/或CSS源代码;所述第一字符串为所述HTML源代码描述的DOM的元素的第一属性字符串;所述第一属性字符串为所述DOM元素的类名和/或ID;所述第二源代码为Javascript源代码和/或Vbscript源代码;所述第二模块还包括:第五模块,用于适时为所述第一字符串集合中的第一字符串生成对应的第二字符串;第六模块,用于记录所述第一字符串与第二字符串的一一对应关系;所述第四模块包括:第七模块,用于基于所述第一字符串集合和所述对应关系,以同步或异步的方式,在所述第一源代码和所述第二源代码中,将获取所述第一字符串替换为对应的第二字符串。一种服务器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现权利要求1-3任一所述的方法步骤。一种计算机可读存储介质,存储有机器机器可识别指令,在被处理器调用和执行时,所述机器机器可识别指令促使所述处理器:实现权利要求1-3任一所述的方法步骤。优化的,所述第一源代码与所述第二源代码同属于一个web系统。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。图1是本发明实施例的界面图;图5是本发明第Y一实施例的流程图;图6是本发明第Y二实施例的系统结构示意图;图7是本发明第Y二实施例的第二模块的系统结构示意图;图8是本发明第Y二实施例的第四模块的系统结构示意图;具体实施方式本发明实施例提供了一种压缩代码的方法,该方法可以应用于服务器,对应用程序代码进行压缩加密混淆。也可以应用于终端,终端包括手机、平板电脑等设备。程序中的常量为人工约定的一种值,一般讲,只要所述常量是相互区别的程序即可由此作出相应的正确的判断和流程分支。常量简化为单个或几个字符,既可加密所述常量防止破解也可压缩代码长度。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。第Y一实施例参考图1、图5一种压缩代码的方法。同一个网站系统,文件包括HTML、CSS、JS文件,其中共同的常量字符串为网页DOM元素的字符串形式的类名、ID、与远端约定的命令格式等。TOO1、获取HTML源代码和/或CSS源代码;所述第一源代码包括HTML源代码和/或CSS源代码。于系统的显示屏上生成用于操作的界面,检测添加端口命令。于所述界面上设置添加端口的命令按钮,触摸或点击所述命令按钮,发送添加端口命令,响应于检测到所述添加端口命令,于所述显示屏上添加至少一个的包含呈对应关系的输入端口704、输出端口707的端口界面区;在hmtl实现的界面上,所述端口界面区为包含两个文本框的div标签实现并显示,并将所述两个文本框数据关联,一作为输入端口704,另一位输出端口707。按预定规则添加至少一个的包含输入端口704和输出端口707的端口界面区后,将所述第一源代码的相应的各个代码分段或模块分别以可识别的状态置于相应的所述输入端口704。所述第一源代码包括HTML代码分段和CSS代码分段,用户经过传统的复制粘贴操作将源代码分段分别填入对应实质为网页的文本框的输入端口704中,通过select按钮控件705选定对应的代码分段的类型为HTML、CSS、JavaScript、VbScript。也可直接上传html和css文件到服务器。在系统中,将所述源代码存为字符串形式。将上述的代码内容和代码类型进行数据关联后上传到服务器中,服务器接收字符串形式的所述代码并存储于字符串数组中,以便后续步骤对代码进行压缩处理。以下步骤是对存储于字符串数组中的代码的压缩处理。所述代码分段可以是一个代码文件中的各个部分,或为分别各自以文件形式存在的代码文件。本步骤表述成HTML源代码和CSS源代码、Js源代码分别以可识别的状态置于相应的所述输入端口704同义。界面上的输入窗口704动态或静态方式设置,对整体功能效果没有影响。TOO2、获取HTML源代码和/或CSS源代码表述的DOM元素的类名和/或ID,生成包含所述类名和/或ID第一字符串集合;获取所述第一源代码中的第一字符串,生成包含所述第一字符串的第一字符串集合。所述第一字符串为所述HTML源代码描述的DOM的元素的第一属性字符串;所述第一属性字符串为所述DOM元素字符串形式的类名和/或ID。所述第一字符串例如类名"hun_saveTitle"在不同类型的文件中有不同的上下文环境:在html文件中:<div id='hun_idNameWriterNow'class="hun_saveTitle"></div>,在css文件中:.hun_saveTitle{margin-right:1px;}。在js文件中:var hun_processBar=document.getElementByClassName('hun_saveTitle')[0]。通过适应的算法在HTML、CSS文件中提取类名和id形成数据集合。在HTML、CSS文件中所述的类名和id皆有明显的上下文标识,在js中特征弥散。相同属性的数据的获取算法无论使用正则表达式和静态分析法,在上述的三种文件中皆是不同。所述第一字符串获取算法为正则表达式,HTML文件中使用的正则表达式:/<.*(class|id)[\s]*=[\s]*['"]([^\s\'\"\<\>]*)['"]>/g;/class=['|"]{0,1} ([\w+\s]+)['|"]{0,1}/g;/id=['|"]{0,1} ([\w+\s]+)['|"]{0,1}/;在CSS文件中的正则表达式:/\.[\w]+\b/g,/\#[\w]+\b[\s]*{/g;TOO3、适时为所述第一字符串集合中的类名和/或ID生成对应的第二字符串;所述第二字符串异于所述第一字符串集合中的任一其他元素的随机字符串;适时为所述第一字符串集合中的第一字符串生成对应的第二字符串;所述第二字符串异于所述第一字符串集合中的任一元素;将在HTML、CSS文件中提取类名字符串和id字符串合并成一个集合即数组中,为每个所述数组元素生成对应的一个第二字符串,与所述第一字符串一一对应,优化的是:所述第二字符串要异于所述集合中的每个事先得到的字符串。实际操作中,不能体现所述源代码中的类名或ID的真实含义的第二字符串可以通过随机算法生成,该随机算法可以是HASH算法,或直接用一个或俩个字母来分别生成所述第二字符串,具体的通过何种方式生成用于替换类名或ID的第二字符串,在本实施例中不做限制。事先统计所述类名字符串和id字符串在所提供的全部代码中出现的次数,次数多的优先生成一个短的替换字符串,有利于代码的压缩效果。源代码压缩是直接将源代码文本进行压缩,将代码中的类的名字、ID改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,甚至改写成“__”这样的符号,删除空格,将多行代码挤到一行中 。这样的压缩方式难于理解,调试也变得非常困难。使用基于时间的伪随机数算法生成随机数K,伪随机数生成算法:真正的随机数在某过程中是按分布概率随机产生的,其结果是不可预测的,而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,可以认为这个可预见的结果其出现的概率是100%,所以用随机数生成算法所产生的“随机数”并不随机,是伪随机数;TOO4、记录所述第一字符串与第二字符串的一一对应关系;所述第一数据集合为结构数组,集合的元素为数据对:(第一字符串A,第二字符串B),以此形式保存。TOO5、获取为Javascript源代码和/或Vbscript源代码;所述第二源代码包括JavaScript代码或VbScript代码,获取方法等同于获取第一源代码。在表述上,T005和T001是独立的,在实践上,可将两者合并在一起执行,由服务器判断第一源代码和第二源代码并相应处理。TOO6、基于所述第一字符串集合和所述对应关系,以同步或异步的方式,在所述第一源代码和所述第二源代码中,将获取类名和/或ID替换为对应的第二字符串。保证在整个网站的文件系统中,所有的类名字符串和id相同。所述第一源代码和第二源代码包括系统中具有数据关联的全部源代码,只要源代码中包含所述类名或id都要进行所述替换操作。在js文件中,所述类名字符串和id与其他的常量有共同的代码环境,只有在所述第一字符串集合出现的字符串才可被替换。在js文件中,所述第一字符串根据上下文环境和已经得到的第一字符串集合中的元素获取。在为js文件中的第二源代码中确认所述第一字符串的方式为“位于引号之间的属于所述第一字符串集合的单词字符串为所期望的目标字符串”。对应的表述为:基于所述第一字符串集合,于所述第二源代码中获取并确认所述第一字符串集合中的所期望的所述第一字符串。具体的,用随机字符串“AB”替换预先获取到的“hun_saveTitle”,所述第一源代码和第二源代码经过本步骤处理后,获取替换后的对应的源代码。在html文件中:<div id='hun_idNameWriterNow'class="AB"></div>,在css文件中:.AB{margin-right:1px;}。在js文件中:var hun_processBar=document.getElementByClassName('AB')。第一源代码和第二源代码,同时或分别用循环的方法将所述第一字符串集合中的各个带有提示信息的较长的第一字符串,替换为较短的第二字符串。所述替换步骤与上述的获取步骤具有相同的上下文环境。针对第二源代码进行上述的替换时,获取所述第一字符串的操作与替换操作同步进行。T007、输出第一源代码和第二源代码的替换操作后而分别得到的对应的第一目标源代码和第二目标源代码。将与所述输入端口704中的第一源代码所对应的服务器所返回的压缩后的所述第一目标源代码输出到与所述输入端口704同属于一个所述端口界面区的输出端口707中。将所述第一源代码和第二源代码发送到服务器前,用data-属性分别标记发送代码的输入窗口A,设置data-rar=“A”,接受服务器返回的压缩后的代码时候,服务器回传的参数当中包括所述参数data-rar==“A”,以此将所述压缩后的代码输入到对应所述输入窗口A的输出窗口A1。本实施例中,首先生成不能体现所述类名、id的真实含义的名称,其次,用生成的名称替换第一源代码和第二源代码中的类名、id,最后,确定经过名称替换后的源代码为替换后源代码。将替换的后的源代码:html代码、css代码、js代码发布到服务器上。相应的类名、id等常量变成短小的无意义的字符串,即压缩了代码长度,兼有加密效果。实施例说明:所述适时为所述第一数据集合中的第一字符串生成对应的第二字符串,指在生成所述第一字符串集合后至替换源码步骤之间,可以适当安排本步骤,这个步骤在实施例中的位置可以靠前或靠后,只要所述第一数据集合建立完毕就可为所述第一字符串生成第二字符串,优化的目的为保证所述第二字符串不同于所述第一数据集合中的任一元素。当然,可以在生成所述第一字符串集合的同时获取所述第二字符串。此对应关系建立的最晚时机是处理所述第二源代码之前。步骤将所述第一源代码中的第一字符串替换为第二字符串,也可按实际情况调整顺序位置。所述获取预先存储的源代码的为通过预设的路径设置信息,获取目标数据文件,其中,所述目标数据文件包括所述源代码,或者,取值于所述源代码所粘贴的文本框的值;第Y二实施例,参考图6、图7、图8。一种压缩代码的系统,其特征为,所述系统包括:第一模块,用于获取第一源代码;所述第一源代码为HTML源代码和/或CSS源代码;第二模块,用于获取所述第一源代码中的第一字符串,生成包含所述第一字符串的第一字符串集合;所述第一字符串为所述HTML源代码描述的DOM的元素的第一属性字符串;所述第一属性字符串为所述DOM元素的类名和/或ID;所述第二模块还包括:第五模块,用于适时为所述第一字符串集合中的第一字符串生成对应的第二字符串;第六模块,用于记录所述第一字符串与第二字符串的一一对应关系;第三模块,用于获取第二源代码;所述第二源代码为Javascript源代码和/或Vbscript源代码;第四模块,用于基于所述第一字符串集合,于所述第二源代码中获取并确认所述第一字符串集合中的所期望的所述第一字符串。所述第四模块包括:第七模块,用于基于所述第一字符串集合和所述对应关系,以同步或异步的方式,在所述第一源代码和所述第二源代码中,将获取所述第一字符串替换为对应的第二字符串。第Y三实施例。本发明还提供了一种服务器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信,存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,以使该节点设备执行第Y一实施例各个步骤。第Y四实施例。一种计算机可读存储介质,存储有机器机器可识别指令,在被处理器调用和执行时,所述机器机器可识别指令促使所述处理器:实现第Y一实施例的方法步骤。对于装置或系统的实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。
因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器和/或非易失性内存等形式,如只读存储器或闪存。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信号存储。信号可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器、只读存储器、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信号。
按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitorymedia),如调制的数据信号和载波。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。
可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。
所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。
在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种针对字符串的估算定位方法和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种估算定位方法,其特征为,包括:
获取源字符串,所述源字符串包括单位字符串;
对上述源字符串替换操作用以生成目标字符串;
所述替换操作包括子操作;
所述子操作包括,
步骤A、于所述源字符串的第一位置获取第一单位字符串;
步骤B、获取第一替换字符串,所述第一替换字符串于所述第一位置用以替换所述第一单位字符串;
步骤C、获取信息对,所述信息对包括所述第一位置和对应的所述第一单位字符串与所述第一替换字符串的长度差;
上述源字符串完成预期的替换操作,生成并发布所述目标字符串;
获取并保存包括所述信息对的替换信息集合;
获取所述目标字符串上的第一分析位置,所述第一分析位置处有第一分析子字符串;
获取并解析所述替换信息集合用以获取所述替换信息集合中的所有合规信息对;
所述合规信息对为包括的解析出来的所述位置值不大于动态更新的所述第一分析位置的所述信息对;
将所有合规信息对的长度差累加到所述第一分析位置并及时更新所述第一分析位置;
取更新后的所述第一分析位置为第一估算位置;
获取所述源字符串,基于所述源字符串的所述第一估算位置进行标记。
2.根据权利要求1所述的方法,其特征为,所述基于所述源字符串的所述第一估算位置进行标记为:
基于所述第一估算位置,于所述源字符串的尾端方向搜索并记录合乎预定的约束条件的尾字符;
基于所述第一估算位置,于所述源字符串的首端方向搜索并记录合乎所述预定的约束条件的首字符;
获取上述搜索获得的所述尾字符和首字符所限定的与所述第一分析子字符串的相关联的单位字符串并标记和/或输出。
3.根据权利要求1所述的方法,其特征为,所述基于所述源字符串的所述第一估算位置进行标记为:
基于所述第一估算位置,搜索符合预定规则的语义单元的头部与尾部并标示所述语义单元的头部与尾部之间的局部字符串。
4.根据权利要求1所述的方法,其特征为:
所述源字符串为源代码的字符串化;
所述第一单位字符串为第一元素名;
所述目标字符串为机器可识别代码字符串;
所述获取所述目标字符串上的第一分析位置为获取所述机器可识别代码字符串在运行中发生错误时候的所提示的错误报告包含的第一分析位置;
所述替换信息集合的保存方式是:
将所述替换信息集合记录于第三字符串中,并将所述第三字符串以相应的所述源代码或机器可识别代码的注释的形式附加于所述代码字符串末尾处并保存所述代码,或,将所述替换信息集合以指定的文件的形式保存到本地或服务器。
5.根据权利要求4所述的方法,其特征为:
针对所述注释形式的所述替换信息集合,所述注释中包含用于标识所述替换信息集合的特征字符串。
6.根据权利要求4所述的方法,其特征为:
还包括表征所述源代码字符串和对应所述机器可识别代码字符串的对应关系的代码字符串ID号;
所述代码字符串ID号由系统生成或人为指定;
所述代码字符串ID号以注释的形式附加到所述源代码字符串和所述机器可识别代码字符串末端,用以识别所述源代码字符串和所述机器可识别代码字符串是否为相互对应。
7.根据权利要求4所述的方法,其特征为:
所述第一单位字符串包括注释、空格和/或回车符;
所述第一替换字符串包括空字符串;
所述源代码包括JavaScrip或VBScript脚本语言代码;
所述元素名包括:局部变量名、方法名、函数名、常量;
所述发布包括机器识别、判断、执行、调试。
8.一种估算定位系统,其特征为,包括:
第一模块,用于获取源字符串,所述源字符串包括单位字符串;
第二模块,用于对上述源字符串进行替换操作,用以生成目标字符串;
所述第二模块至少包括子模块A,子模块B,子模块C,子模块D,子模块E;
所述子模块A,用于于所述源字符串的第一位置获取第一单位字符串;
所述子模块B,用于获取第一替换字符串,所述第一替换字符串于所述第一位置用以替换所述第一单位字符串;
所述子模块C,用于获取第一把信息对,所述第一信息对包括所述第一位置和对应的所述第一单位字符串与所述第一替换字符串的长度差;
所述子模块D,用于上述源字符串完成预期的替换操作,来生成并发布所述目标字符串;
所述子模块E,用于获取并保存包括所述第一信息对的替换信息集合;
第三模块,用于获取所述目标字符串上的第一分析位置,所述第一分析位置处有第一分析子字符串;
第四模块,用于获取并解析所述替换信息集合用以获取所述替换信息集合中的所有合规信息对,所述合规信息对为包括的解析出来的所述位置值不大于动态更新的所述第一分析位置的所述信息对;
第五模块,用于将所有合规信息对的长度差累加到所述第一分析位置并及时更新所述第一分析位置,取更新后的所述第一分析位置为第一估算位置;
第六模块,用于获取所述源字符串,基于所述第一估算位置标记所述源字符串。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7中任一项所述方法的步骤。
10.一种压缩代码的方法,其特征为,所述方法包括:获取第一源代码;获取所述第一源代码中的第一字符串,生成包含所述第一字符串的第一字符串集合;获取第二源代码;基于所述第一字符串集合,于所述第二源代码中获取并确认所述第一字符串集合中的所期望的所述第一字符串 。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010404855.6A CN113676186A (zh) | 2020-05-14 | 2020-05-14 | 一种针对字符串的估算定位方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010404855.6A CN113676186A (zh) | 2020-05-14 | 2020-05-14 | 一种针对字符串的估算定位方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113676186A true CN113676186A (zh) | 2021-11-19 |
Family
ID=78537240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010404855.6A Pending CN113676186A (zh) | 2020-05-14 | 2020-05-14 | 一种针对字符串的估算定位方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113676186A (zh) |
-
2020
- 2020-05-14 CN CN202010404855.6A patent/CN113676186A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8261241B2 (en) | Converting format strings to regular expressions | |
US9760347B2 (en) | Method and system to identify GUI objects for non-markup-language-presented applications | |
US8954928B2 (en) | Version labeling in a version control system | |
CN108984612B (zh) | 目标sql语句的获取方法、装置、计算机设备及存储介质 | |
CN111818123A (zh) | 网络前端远程回放方法、装置、设备及存储介质 | |
EP3724835A1 (en) | Split mapping for dynamic rendering and maintaining consistency of data processed by applications | |
CN113609820A (zh) | 基于可扩展标记语言文件生成word文件的方法、装置及设备 | |
CN105989126B (zh) | 一种网页显示方法及装置 | |
CN106547782A (zh) | 日志信息的获取方法及装置 | |
CN106445815A (zh) | 一种自动化测试方法及装置 | |
CN112187713B (zh) | 报文转换的方法、装置、计算机设备和存储介质 | |
CN112527291A (zh) | 网页生成方法、装置、电子设备及存储介质 | |
CN109558548B (zh) | 一种消除css样式冗余的方法及相关产品 | |
US9830326B2 (en) | Identifying data offsets using binary masks | |
CN110059088B (zh) | 一种块链式账本中的数据属性标识方法、装置及设备 | |
US8930808B2 (en) | Processing rich text data for storing as legacy data records in a data storage system | |
CN109542501A (zh) | 浏览器表格兼容方法、装置、计算机设备及存储介质 | |
CN115577683B (zh) | 一种html富文本内容转换方法、装置、设备和介质 | |
CN113127776A (zh) | 面包屑路径生成方法、装置及终端设备 | |
CN111241096A (zh) | 一种excel文档的文本提取方法、系统、终端及存储介质 | |
CN113676186A (zh) | 一种针对字符串的估算定位方法和系统 | |
CN111444194B (zh) | 一种块链式账本中索引的清除方法、装置及设备 | |
CN113935289A (zh) | 文档在线处理方法及装置 | |
US20150324333A1 (en) | Systems and methods for automatically generating hyperlinks | |
WO2016099966A1 (en) | Append structured data system for maintaining structured format compatibility |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20211119 |
|
WD01 | Invention patent application deemed withdrawn after publication |