CN106844565B - 数据行之间的字符比较方法及装置 - Google Patents

数据行之间的字符比较方法及装置 Download PDF

Info

Publication number
CN106844565B
CN106844565B CN201611270751.0A CN201611270751A CN106844565B CN 106844565 B CN106844565 B CN 106844565B CN 201611270751 A CN201611270751 A CN 201611270751A CN 106844565 B CN106844565 B CN 106844565B
Authority
CN
China
Prior art keywords
characters
comparison
line
compared
bit sequence
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.)
Active
Application number
CN201611270751.0A
Other languages
English (en)
Other versions
CN106844565A (zh
Inventor
黄凯旋
杨宁
顾庆荣
康凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Yixu Network Technology Co ltd
Original Assignee
Shanghai Dnion Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Dnion Information Technology Co ltd filed Critical Shanghai Dnion Information Technology Co ltd
Priority to CN201611270751.0A priority Critical patent/CN106844565B/zh
Publication of CN106844565A publication Critical patent/CN106844565A/zh
Application granted granted Critical
Publication of CN106844565B publication Critical patent/CN106844565B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90348Query processing by searching ordered data, e.g. alpha-numerically ordered data

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种数据行之间的字符比较方法及装置,将所述待比较数据行中一个作为比较行,另一个作为被比较行,所述方法包括:判断所述比较行和被比较行是否均为非空数据行;当确定所述比较行和被比较行均为非空数据行时,对所述比较行和被比较行执行行内比较。上述的方案,可以提高数据行中字符的比较的效率。

Description

数据行之间的字符比较方法及装置
技术领域
本发明属于数据比较技术领域,特别是涉及一种数据行之间的字符比较方法及装置。
背景技术
伴随着业务延展,在程序测试过程中,需要对形式多样的文件执行文件比较。其中,文件比较包括文本比较(Text Compare)与二进制比较(Binary Compare)两种类型,旨在通过文件之间的比较,确定两份文件之间是否存在差异,并在确定存在差异时,能够快速定位差异的地方。
但是,现有的数据行中字符的比较方法存在着效率低下的问题。
发明内容
本发明实施例解决的问题是如何提高数据行中字符的比较效率。
为解决上述问题,本发明实施例提供了一种数据行之间的字符比较方法,将所述比较文件和被比较文件中一一对应的非空数据行中一个作为比较行,另一个作为被比较行,所述方法包括:判断所述比较行和被比较行是否均为非空数据行;当确定所述比较行和被比较行均为非空数据行时,对所述比较文件和被比较文件中一一对应的非空数据行执行行内比较。
可选地,所述对所述比较行和被比较行执行行内比较,包括:分别对所述比较行和被比较行的字符从尾至头进行遍历并比较,直至所述比较行与所述被比较行中相应位序的字符不同;将通过从尾至头遍历得到的所比较文件和所述被比较文件中相应位序的字符之后的字符标记为相同并分别从所述比较行和所述被比较行中移除;将所述比较行与所述被比较行中剩余的字符从头至尾进行比较,得到对应的比较结果。
可选地,所述将所述比较行与所述被比较行中剩余的字符从头至尾进行比较,包括:从头至尾遍历所述比较行的剩余字符;将遍历至的所述比较行的剩余字符中的当前位序的字符与所述被比较行中的剩余字符逐一进行比较;判断所述被比较行的剩余字符中是否存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符;当确定所述被比较行的剩余字符中不存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符时,获取比较行的剩余字符中下一位序字符,并从所述将遍历至的所述比较行的剩余字符中的当前位序的字符与所述被比较行中的剩余字符逐一进行比较开始执行,直至所述比较行的剩余字符遍历完毕。
可选地,当确定所述被比较行的剩余字符中存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符时,还包括:将所述比较行的剩余字符中当前位序的字符与所述被比较行的剩余字符中目标位序的字符标记为相同;将所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符,分别作为所述比较行的剩余字符和所述被比较行的剩余字符,并从所述从头至尾遍历所述比较行的剩余字符开始执行,以找到其他的相同字符并记录,直至所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符全部遍历完成;获取最后一次记录的相同字符的信息,并将对应的比较行中的字符记为第一相同位序的字符,对应的被比较行中的字符记为第二相同位序的字符;将所述比较行的剩余字符中所述第一相同位序之后的字符作为所述比较行的剩余字符,将所述被比较行的剩余字符中所述第二相同位序之后的字符作为所述被比较行的剩余字符,并从所述从头至尾遍历所述比较行的剩余字符开始执行,以找到所述比较行的剩余字符中所述第一相同位序之后的字符中与所述被比较行的剩余字符中所述第二相同位序之后的字符中相同的字符并记录,直至所述比较行中所述第一相同位序之后的字符或者所述被比较行的剩余字符中当前位序至所述目标位序的字符遍历完成。
本发明实施例还提供了一种数据行之间的字符比较装置,将所述比较文件和被比较文件中一一对应的非空数据行中一个作为比较行,另一个作为被比较行,所述装置包括行内比较单元;所述行内比较单元包括:第三判断子单元,适于判断所述比较行和被比较行是否均为非空数据行;行内比较子单元,适于当确定所述比较行和被比较行均为非空数据行时,对所述比较文件和被比较文件中一一对应的非空数据行执行行内比较。
可选地,所述行内比较子单元包括:移除模块,适于分别对所述比较行和被比较行的字符从尾至头进行遍历并比较,直至所述比较行与所述被比较行中相应位序的字符不同;将通过从尾至头遍历得到的所比较文件和所述被比较文件中相应位序的字符之后的字符标记为相同并分别从所述比较行和所述被比较行中移除;第二比较模块,将所述比较行与所述被比较行中剩余的字符从头至尾进行比较,得到对应的比较结果。
可选地,所述第二比较模块,包括:第一遍历子模块,适于从头至尾遍历所述比较行的剩余字符;第二比较子模块,将遍历至的所述比较行的剩余字符中的当前位序的字符与所述被比较行中的剩余字符逐一进行比较;当确定所述被比较行的剩余字符中不存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符时,获取比较行的剩余字符中下一位序字符,并从所述将遍历至的所述比较行的剩余字符中的当前位序的字符与所述被比较行中的剩余字符逐一进行比较开始执行,直至所述比较行的剩余字符遍历完毕。
可选地,所述第二比较模块,还包括:第二标记子模块,适于当确定所述被比较行的剩余字符中存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符时,将所述比较行的剩余字符中当前位序的字符与所述被比较行的剩余字符中目标位序的字符标记为相同;第一更新子模块,适于将所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符,分别作为所述比较行的剩余字符和所述被比较行的剩余字符;第三比较子模块,适于从所述从头至尾遍历所述比较行的剩余字符开始执行,以找到其他的相同字符并记录,直至所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符全部遍历完成;获取子模块,适于获取最后一次记录的相同字符的信息,并将对应的比较行中的字符记为第一相同位序的字符,对应的被比较行中的字符记为第二相同位序的字符;第二更新子模块,适于将所述比较行的剩余字符中所述第一相同位序之后的字符作为所述比较行的剩余字符,将所述被比较行的剩余字符中所述第二相同位序之后的字符作为所述被比较行的剩余字符;第四比较子模块,适于从所述从头至尾遍历所述比较行的剩余字符开始执行,以找到所述比较行的剩余字符中所述第一相同位序之后的字符中与所述被比较行的剩余字符中所述第二相同位序之后的字符中相同的字符并记录,直至所述比较行中所述第一相同位序之后的字符或者所述被比较行的剩余字符中当前位序至所述目标位序的字符遍历完成。
与现有技术相比,本发明的技术方案具有以下的优点:
上述的方案,通过首先比较待比较的两个数据行是否均为非空数据行时,可以避免对两个数据行中一个为空的数据行与非空数据行进行比较,也即提前将其中一个数据行为空的两个待比较数据行排除在比较行列之外,因而可以提高数据行的比较效率。
进一步地,在执行不同的数据行之间的行内比较时,首先从尾至头分别对比较行和被比较行进行遍历,直至所述比较行与所述被比较行中相应位序的字符不同,并将比较行和被比较行中处于从尾至头遍历至的相同位序且相同的字符从比较窗口中移除,以减少比较内容,从而可以提高行内比较的效率,进而可以提高文件比较的效率。
进一步地,在对所述比较行和被比较行的剩余字符进行比较,且确定所述比较行的剩余字符中第一位序的字符与被比较行的剩余字符中第二位序的字符相同时,将所述比较行的剩余字符中第一位序的字符与被比较行的剩余字符中第二位序的字符记录为相同位置,并将所述比较行和被比较行的剩余字符中第一位序至所述第二位序之间分别作为剩余字符继续寻找相同的字符,通过不断缩小比较窗口内的字符的数量,通过不断缩小比较窗口内的字符的数量,可以准确地定位所述比较行与所述被比较行中的不同位置,可以进一步提高数据行行内字符比较的准确性,进而可以进一步提高文件比较的准确性。
附图说明
图1是本发明实施例中一种的文件比较方法的流程图;
图2至图3是本发明实施例中另一种行间比较方法的流程图;
图4至图9是本发明实施例中的行间比较方法的实例示意图;
图10至图13本发明实施例中一种行内比较方法的流程图;
图14至图18是本发明实施例中的行内比较方法的实例示意图;
图19是本发明实施例中的一种文件比较装置的结构示意图。
具体实施方式
正如背景技术所言,现有的文件比较方法存在着效率低下的问题。
为解决上述问题,本发明实施例中的技术方案通过将比较文件和被比较文件中的相应数据采用自定义的替换内容进行替换,并对经过替换后得到的比较文件和被比较文件执行行间比较和行内比较,可以将比较文件和被比较文件中无需进行比较的内容从比较内容中进行移除,可以有效减少比较数据的数量,从而可以提高文件比较的效率。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
图1是本发明实施例中的一种文件比较方法的流程图。如图1所示的文件比较方法,可以包括:
步骤S101:将比较文件和被比较文件中的相应数据采用自定义的替换内容进行替换。
在具体实施中,所述替换内容可以根据比较文件和被比较文件的比较需求进行设定,也即可以由用户采用自定义的方式进行设置。
在本发明一实施例中,当所述比较文件和被比较文件为文本文件时,将比较文件和被比较文件中相应数据列的内容采用所述替换内容进行替换。其中,对应的替换内容可以采用正则表达式的方式。
在本发明另一实施例中,当所述比较文件和被比较文件为数据库表导出的表数据逗号分隔值(Comma-Separated Values,CSV)文件时,将所述比较文件和被比较文件中相应数据列的内容采用所述替换内容进行替换。例如,将比较文件和被比较文件的数据行的数据插入时间所在的数据列采用对应的替换内容进行替换。
在本发明又一实施例中,当比较文件和被比较文件为二进制文件时,将所述比较文件和被比较文件中相应字节的内容采用自定义的替换内容进行替换。例如,将所述比较文件和被比较文件中所有数据行中第3个字节到第10个字节所在时间数据列采用对应的替换内容进行替换。
步骤S102:对经过替换后得到的比较文件和被比较文件执行行间比较,得到一一对应不同的数据行。
在具体实施中,当将比较文件和被比较文件的所有数据行均采用对应的替换内容进行替换后,将替换后的比较文件和被比较文件执行行间比较。其中,替换后的比较文件和被比较文件执行行间比较时,可以采用现有技术中的行间比较方法。
为了减少行间比较所占用的资源,从而提高行间比较的准确性和可靠性,在本发明一实施例中,可以采用浮动窗口的方式对比较文件和被比较文件执行行间比较,具体请参见图2至图9。
步骤S103:对所述比较文件和被比较文件中一一对应的不同数据行执行行内比较。
在具体实施中,当确定比较文件和被比较文件中不同的数据行时,可以对比较文件和被比较文件中相应的数据行执行行内比较,以确定具体的差异部分。
在具体实施中,当对所述比较文件和被比较文件中一一对应的不同数据行执行行内比较时,可以采用现有技术中的行间比较方法进行,本领域的技术人员可以根据实际的需要选择。
为了提高行内比较的准确性和效率,在本发明一实施例中,采用先从尾至头的顺序移除比较行与被比较行尾部相同的字符,再将比较行和被比较行的剩余字符从头至尾进行比较,具体请参见图10至图18。
在具体实施中,为了提高文件比较结果输出的灵活性,本发明实施例中的文件比较方法还可以包括:
步骤S104:按照预设的报表格式生成对应的比较报告并输出。
在具体实施中,预设的报表格式可以根据实际的需要进行灵活设置,本发明在此不做限制。
上述的方案,通过将比较文件和被比较文件中的相应数据采用自定义的替换内容进行替换,并对经过替换后得到的比较文件和被比较文件执行行间比较和行内比较,可以将比较文件和被比较文件中无需进行比较的内容从比较内容中进行移除,可以有效减少比较数据的数量,从而可以提高文件比较的效率。
下面将对本发明实施例中的文件比较方法进行进一步详细的介绍。
图2示出了本发明实施例中的一种文件比较方法中的行间比较方法的流程图。参见图2,在对文件中的数据行执行行间比较时,可以采用如下的步骤实现:
步骤S201:获取预配置的默认载入行数的信息。
在具体实施中,所述预配置的默认载入行数的信息包括数据行的默认载入行数的信息。其中,预配置的比较默认载入行数可以根据实际的需要进行设置,如设置为10行、20行等。
步骤S202:基于所述预配置的默认载入行数的信息,对所述比较文件和被比较文件执行行间比较。
在具体实施中,可以将待比较的两个文件中,其一称为比较文件,另一者称为被比较文件。当确定对应的比较窗口内默认载入行数的比较行数的信息时,可以基于预配置的默认载入行数的信息,对所述比较文件和被比较文件执行行间比较,具体请参见图3。
参见图3,在本发明一实施例中,所述基于预配置的默认载入行数的信息,对所述比较文件和被比较文件执行行间比较,可以采用如下的步骤实现:
步骤S301:分别获取比较文件与所述被比较文件的当前比较窗口内的数据行。
在具体实施中,当首次获取时,比较文件和被比较文件中当前比较窗口内的数据行为所述默认载入行数的数据行,如10行等;当非首次获取时,比较文件和被比较文件中当前比较窗口内的数据行将在第一阈值和第二阈值之间浮动。其中,第一阈值和第二阈值与所述默认载入行数关联,且第一阈值小于所述默认载入行数,第二阈值大于所述默认载入行数。例如,当默认载入行数为9时,第一阈值和第二阈值可以分别设置为4行和18行。
步骤S302:对所述比较文件的当前比较窗口中的数据行进行遍历,获取遍历到的比较文件当前比较窗口中当前位序的数据行。
在具体实施中,当获取到比较文件和被比较文件的当前比较窗口内的数据行时,可以对比较文件和被比较文件的当前比较窗口内的数据行进行逐一比较。具体而言,可以首先对比较文件的当前比较窗口内的数据行按照顺序进行遍历,并将遍历到的数据行作为比较文件当前比较窗口内当前位序的数据行。
参见图4,当预配置的默认载入行数的信息包括9个数据行时,在第一次获取时,比较文件的当前比较窗口内包括数据行L1~L9,被比较文件当前比较窗口内包括数据行R1~R9。接着,对比较文件当前比较窗口内的数据行L1~L9按照顺序进行遍历,首先获取数据行L1,作为比较文件当前比较窗口内当前位序的数据行。
步骤S303:将所述比较文件的当前比较窗口中当前位序的数据行与所述被比较文件的当前比较窗口内的所有数据行逐一进行比较。
在具体实施中,可以将比较文件的当前比较窗口内当前位序的数据行与被比较文件当前比较窗口内的所有数据行逐一进行比较,以从被比较文件当前比较窗口内查找到与比较文件当前比较窗口当前位序的数据行相同的数据行。
继续参见图4,将比较文件当前比较窗口当前位序的数据行L1依次与被比较文件当前比较窗口内的数据行R1~R9依次进行比较,以确定数据行R1~R9中是否存在与数据行L1相同的数据行。
步骤S304:判断从所述被比较文件当前比较窗口内是否查找到与所述比较文件当前比较窗口内当前位序的数据行相同的目标位序的数据行;当判断结果为是时,可以执行步骤S306;反之,则可以执行步骤S305。
步骤S305:获取所述比较文件的当前比较窗口内的下一位序的数据行,并从步骤S302重新开始执行。
在具体实施中,当从所述被比较文件当前比较窗口内未查找到与所述比较文件当前比较窗口内当前位序的数据行相同的目标位序的数据行时,则获取比较文件当前比较窗口内当前位序之后的下一位序的数据行,并分别与被比较文件当前比较窗口的所有数据行分别进行比较,也即对当前比较窗口内当前位序之后的下一位序的数据行从步骤S302重新开始执行,直至比较文件当前窗口内的数据行遍历完毕。
步骤S306:将所述比较文件当前比较窗口内的当前位序的数据行与所述被比较文件当前比较窗口内的目标位序的数据行标记为相同。
在具体实施中,当从所述被比较文件当前比较窗口内查找到与所述比较文件当前比较窗口内当前位序的数据行相同的目标位序的数据行时,便可以将所述比较文件当前比较窗口内的当前位序的数据行与所述被比较文件当前比较窗口内的目标位序的数据行标记为相同。
继续参见图4,通过将比较文件当前比较窗口的数据行L1与被比较文件当前比较窗口内的数据行R1~R9依次进行比较,确定比较文件当前比较窗口的数据行L1与被比较文件当前比较窗口内的数据行R1相同。此时,便可以将比较文件当前比较窗口的数据行L1与被比较文件当前比较窗口内的数据行R1记录为相同。
步骤S307:判断所述比较文件当前比较窗口内当前位序之前的数据行与所述被比较文件的当前比较窗口内的目标位序之前的数据行的数量是否相同;当判断结果为是时,可以执行步骤S308;反之,则可以执行步骤S309。
步骤S308:将所述比较文件当前比较窗口内当前位序及之前的数据行,与所述被比较文件的当前比较窗口内的目标位序及之前的数据行移除。
在具体实施中,当从所述被比较文件当前比较窗口内查找到与所述比较文件当前比较窗口内当前位序的数据行相同的目标位序的数据行,且所述比较文件当前比较窗口内当前位序之前的数据行,与所述被比较文件的当前比较窗口内的目标位序之前的数据行的数量相同时,则可以直接将所述比较文件当前比较窗口内当前位序之前的数据行从比较文件当前比较窗口内移除,并将所述被比较文件的当前比较窗口内的目标位序之前的数据行从所述被比较文件的当前比较窗口内移除。
继续参见图4,当通过比较确定比较文件当前比较窗口当前位序的数据行L1与被比较文件当前比较窗口内的数据行R1相同时,且比较文件当前比较窗口当前位序的数据行L1之前,以及被比较文件当前比较窗口内的目标位序的数据行R1之前的数据行均为零,也即所述比较文件当前比较窗口内当前位序之前的数据行,与所述被比较文件的当前比较窗口内的目标位序之前的数据行的数量相同时,可以直接执行将数据行L1从比较文件的当前比较窗口内移除,并将数据行R1从被比较文件的当前比较窗口内移除的操作。
当执行移除操作之后,比较文件的当前比较窗口内的数据行包括数据行L2~L9,被比较文件的当前比较窗口内的数据行包括数据行R2~R9。
步骤S309:为数据行数量较少的所述比较文件当前比较窗口内当前位序数据行与上一位序的数据行之间,或者所述被比较文件的当前比较窗口内目标位序的数据行与上一位序的数据行之间添加相应数量的空数据行,以使得所述比较文件当前比较窗口内当前位序之前的数据行与所述被比较文件的当前比较窗口内的目标位序之前的数据行的数量相同,并执行步骤S308。
在具体实施中,当从所述被比较文件当前比较窗口内查找到与所述比较文件当前比较窗口内当前位序的数据行相同的目标位序的数据行,且所述比较文件当前比较窗口内当前位序之前的数据行,与所述被比较文件的当前比较窗口内的目标位序之前的数据行的数量不相同时,可以为数据行数量较少的比较文件的当前比较窗口内当前位序的数据行之前添加对应数量的数据行,或者为数据行数量较少的被比较文件当前比较窗口内目标位序的数据行之前添加对应数量的数据行,以使得比较文件当前比较窗口内当前位序的数据行相同的目标位序的数据行的数量,与被比较文件的当前比较窗口内的目标位序之前的数据行的数量相同,从而使得比较文件当前比较窗口内当前位序及之前的数据行分别与比较文件的当前比较窗口内的目标位序及之前的数据行一一对应。
参见图5,在数据行L1和数据行R1移除之后,将数据行L2依次和数据行R2~R9依次进行比较,确定数据行L2与数据行R6相同。此时,由于比较文件当前比较窗口内当前位序的数据行L2之前的数据行为空,被比较文件当前比较窗口内目标位序的数据行L6之前的数据行的数量为4,即数据行R2~R4,即比较文件当前比较窗口内当前位序的数据行L2之前的数据行的数量,小于被比较文件当前比较窗口内目标位序的数据行L6之前的数据行的数量。此时,可以在比较文件当前比较窗口内当前位序的数据行L2之前添加数量为4的空数据行,以使得比较文件当前比较窗口内当前位序的数据行L2之前的数据行也为4,从而使得比较文件当前比较窗口内当前位序的数据行L2之前的数据行与被比较文件当前比较窗口内目标位序的数据行L6之前的数据行一一对应。
在具体实施中,通过添加相应的空数据行,使得比较文件当前比较窗口内当前位序的数据行相同的目标位序的数据行的数量,与被比较文件的当前比较窗口内的目标位序之前的数据行的数量相同时,可以将比较文件当前比较窗口内当前位序及之前的数据行,以及被比较文件的当前比较窗口内的目标位序之前的数据行移除。
参见图6,在将数据行L2及之前的数据行移除之后,比较文件当前比较窗口内的数据行为数据行L3~L9;将数据行R6及之前的数据行移除之后,被比较文件当前比较窗口内的数据行为数据行R7~R9。
步骤S310:判断所述比较文件或被比较文件当前比较窗口中剩余数据行的数量是否小于预设的第一阈值;当判断结果为是时,可以执行步骤S311;当判断结果为否时,则获取所述比较文件下一位序的数据行,并从步骤S302开始执行。
在具体实施中,在每次将对比较文件和被比较文件的当前比较窗口内的相应的数据行移除之后,将会执行一次判断操作,以确定所述比较文件当前比较窗口中数据行,或被比较文件当前比较窗口中数据行的数量是否至少有一个小于预设的第一阈值,以确定是否需要为比较文件当前比较窗口或者被比较文件当前比较窗口中添加默认载入行数的数据行。
步骤S311:判断所述比较文件或被比较文件中的数据行是否全部遍历完成:当判断结果为是时,可以结束比较文件和被比较文件之间的数据行比较操作;反之,则可以执行步骤S312。
步骤S312:获取所述比较文件中下一所述默认载入行数的数据行并添加至所述比较文件中当前比较窗口末尾,作为所述比较文件的当前比较窗口,或者将所述比较文件的中下一默认载入行数的数据行添加至所述被比较文件中当前比较窗口末尾,作为所述被比较文件的当前比较窗口,并从步骤S302开始执行,直至所述比较文件或者被比较文件的所有数据行遍历完成。
在具体实施中,当确定所述比较文件或被比较文件当前比较窗口中剩余数据行的数量中至少一个小于预设的第一阈值时,便可以为剩余数据行的数量小于第一阈值的文件的比较窗口的末尾添加默认载入行数的数据行,从而使得所述比较文件或被比较文件当前比较窗口内数据行的数量大于或等于第一阈值,且小于第二阈值。
继续参见图6,当第一阈值为4时,在将数据行L2及之前的数据行被移除之后,比较文件当前比较窗口内的数据行为数据行L3~L9;将数据行R6及之前的数据行移除之后,被比较文件当前比较窗口内的数据行为数据行R7~R9。此时,比较文件当前比较窗口内的数据行的数量为7,大于第一阈值4;被比较文件当前比较窗口内的数据行的数量为3,小于第一阈值4。因此,需要对被比较文件当前比较窗口执行添加默认载入行数的数据行的操作,也即将被比较文件的剩余待比较数据行中前9个数据行,也即数据行R10~R18添加至被比较文件当前比较窗口的末尾,即数据行R9之后。而对于比较文件的当前比较窗口,则不需要执行添加默认载入行数的数据行的操作。
在具体实施中,当确定比较文件或者被比较文件当前比较窗口内的数据行的数量小于预设的第一阈值时,将从比较文件剩余待比较的数据行或者被比较文件剩余待比较的数据行中获取默认载入行数的数据行添加至比较文件或者被比较文件当前比较窗口内末尾。
参见图7,当比较文件的当前比较窗口内包括数据行L3至L9,被比较文件的当前比较窗口内包括数据行R7~R18时,可以接着获取比较文件的当前比较窗口内的数据行L3分别与数据行R7~R18进行比较,发现不存在与数据行L3相同的数据行,也不存在与数据行L4和L5相同的数据行。
接着,将数据行L6与数据行R7~R18进行逐一比较,确定数据行L6与数据行R9相同,将数据行L6与数据行R9标记为相同。同时,通过判断确定比较文件当前比较窗口内数据行L6之前的数据行为3,而被比较文件当前比较窗口内数据行R9之前的数据行为2,此时,需要在数据行R9之前添加一个空数据行,以使得数据行L6之前的数据行L3~L5分别与数据行R9之前的数据行R7、R8和空数据行一一对应。之后,将比较文件当前比较窗口内数据行L6及之前的数据行进行移除,并将被比较文件当前比较窗口内数据行R9及之前的数据行执行移除的操作。
在将数据行移除后,比较文件当前比较窗口内数据行为L7~L9,小于第一阈值4,因此在数据行L9之后添加9行数据行L10~L19;被比较文件当前比较窗口内数据行为R10~R18,大于或等于第一阈值4,无需为被比较文件当前比较窗口末尾添加默认载入行数的数据行。
在将比较文件当前比较窗口内数据行更新为L7~L19,被比较文件当前比较窗口内数据行更新为R10~R18之后,重新执行将比较文件当前比较窗口内数据行与被比较文件当前比较窗口内数据行进行逐一比较的操作,并确定数据行L11与数据行R14相同。
参见图8,由于比较文件当前比较窗口内数据行L11之前的数据行为L7~L10,与被比较文件当前比较窗口内数据行R14之前的数据行为R10~R13的数量相同。因此,可以直接执行将比较文件当前比较窗口内数据行L11及之前的数据行,以及被比较文件当前比较窗口内数据行R14及之前的数据行直接移除的操作。
在执行移除操作之后,比较文件当前比较窗口内包括数据行L12~L19,大于第一阈值4;被比较文件当前比较窗口内包括数据行R15~R18,等于第一阈值4,因而无需向比较文件当前比较窗口内和被比较文件当前比较窗口内分别执行添加9行数据行的操作,也即将当前比较文件当前比较窗口更新为包括数据行L12~L19,将被比较文件当前比较窗口更新为包括数据行R15~R18,并执行将比较文件当前比较窗口内数据行与被比较文件当前比较窗口内数据行进行逐一比较的操作,即直接进入比较文件当前比较窗口内L12与被比较文件当前比较窗口内包括数据行R15~R18进行比较的操作,直至确定比较文件当前比较窗口内包括数据行L14与被比较文件当前比较窗口内包括数据行R18相同。
参见图9,因比较文件当前比较窗口内数据行L14之前的数据行为L12和L13,被比较文件当前比较窗口内数据行R18之前的数据行为R15~R17,也即二者之前的数据行的数量不相同。此时,需要在数据行L14之前添加一个空数据行,以使得比较文件当前比较窗口内数据行L14之前的数据行的数量为3,与被比较文件当前比较窗口内包括数据行R18之前的数据行的数量相同,以便一一对应。
接着,将比较文件当前比较窗口内数据行L14及之前的数据行,以及被比较文件当前比较窗口内数据行R18及之前的数据行分别进行移除。此时,比较文件当前比较窗口内数据行为L15~L19,被比较文件当前比较窗口内数据行为空,但因比较文件和被比较文件均已经遍历完毕,也即比较文件的数据行到L19结束,被比较文件的数据行到R18结束,此时,由于比较文件当前比较窗口内数据行为L15~L19,被比较文件当前比较窗口内数据行为空,可以直接在被比较文件当前比较窗口内添加与数据行L15~L19一一对应的空数据行即可,并结束本次的文件比较操作。
这里需要指出的是,图2至图9所示的行间比较方法除了可以应用于经过替换内容替换后得到的比较文件和被比较文件中的数据行之间的比较外,可以应用于任意两个文件的比较,以提高文件比较的效率和准确性,本发明在此不做限制。
在具体实施中,当通过前述的方法确定比较文件和被比较文件的数据行之间的相同与不同时,便可以对标记为不同的数据行执行行内比较,以确定不同的数据行之间具体的差异所在。
参见图10,本发明实施中的对不同的数据行执行行内比较的方法,可以包括如下的步骤:
步骤S1001:判断待比较的数据行是否均为非空数据行;当判断结果为是时,可以执行步骤S1002反之,则可以执行步骤S1003。
在具体实施中,可以将比较的数据行中,其中一个称为比较行,另外一个称为被比较行。
在本发明一实施例中,通过前述的描述可知,待在执行行间比较时,当比较文件和被比较文件中的数据行相同,但是位序不同时,会通过添加对应的数据行的方式,使得比较文件与被比较文件的数据行一一对应。因此,不同的数据行中的两个不同的数据行中,可能存在一者为空数据行的情形。因此,可以首先判断所述比较文件和被比较文件中一一对应的不同数据行是否均为非空数据行,以确定是否需要执行后续的行内比较。
步骤S1002:对所述比较行和被比较行执行行内比较。
在具体实施中,当不同的数据行中的两个不同的数据行均不为空数据行时,也即均为非空数据行时,可以对所述比较文件和被比较文件中一一对应的非空数据行执行行内比较,以确定而二者的具体差异所在。
步骤S1003:将所述比较行和被比较行中的非空数据行直接标记为不同。
在具体实施中,当不同的数据行中的两个不同的数据行中一者为空数据行时,对应的非空数据行整体即为二者之间的差异。此时,可以将二者中的非空数据行直接标记为差异部分即可。
在具体实施中,当确定所述比较文件和被比较文件中一一对应的不同数据行均为非空数据行时,可以将所述比较文件和被比较文件中一一对应的非空数据行中一个作为比较行,另一个作为被比较行,所述对所述比较文件和被比较文件中一一对应的非空数据行执行行内比较的方法,参照图11,可以采用如下的操作进行:
步骤S1101:分别对所述比较行和被比较行的字符从尾至头进行遍历并比较,直至所述比较行与所述被比较行中相应位序的字符不同。
在具体实施中,为了提高数据行之间的字符的比较效率,可以首先从尾至头遍历比较行与被比较行中的字符,直至找到字符不同的位置,以提前将尾部相同的字符从比较行列中排除,以减少比较的字符数,以提高比较的效率。
参见图12,当比较行包括字符A1~A12,被比较行包括字符B1~B13时,首先按照从尾至头的顺序,分别遍历比较行和被比较行中对应的字符,也即按照字符A12~A1,字符B13~B1的顺序,分别比较相应位序的字符是否相同。
步骤S1102:将通过从尾至头遍历得到的所比较文件和所述被比较文件中相应位序的字符之后的字符标记为相同并分别从所述比较行和所述被比较行中移除。
在具体实施中,当通过从尾至头遍历并比较确定比较行与被比较行中对应位序的字符相同时,可以将对应位序的字符分别从比较行与被比较行中移除。
继续参见图12,比较行包括字符A1~A12,被比较行包括字符B1~B13。首先,将字符A12与B13比较,确定二者相同;接着,将字符A11与B12进行比较,确定二者也相同;随后,将字符A10与B11进行比较,确定二者也不同。此时,可以将字符A11和A12分别从比较行中移除,比较行的剩余字符为A1~A10;将字符B12和B13分别从被比较行中移除,被比较行的剩余字符为B1~B11。
步骤S1103:将所述比较行与所述被比较行中的剩余字符从头至尾进行比较,得到对应的比较结果。
在具体实施中,当将从尾至头遍历得到的相应位序的相同的字符进行移除之后,可以将比较行与被比较行中剩余的字符从头至尾进行遍历并比较,以确定比较行与被比较行中存在差异的字符。
继续参见图12,在将字符A11和A12,以及字符B12和B13分别从比较行和被比较行中移除之后,可以将比较行的剩余字符A1~A10分别与被比较行的剩余字符B1~B11从头至尾进行比较。
参见图13,本发明实施例中的一种在将所述比较行与所述被比较行中的剩余字符从头至尾进行比较的方法,可以通过如下的步骤实现:
步骤S1301:从头至尾遍历所述比较行的剩余字符。
在具体实施中,当确定比较行和被比较行的剩余字符时,可以首先按照从头至尾的顺序获取比较行的剩余字符中的当前位序的字符。步骤S1302:将遍历至的所述比较行的剩余字符中的当前位序的字符与所述被比较行中的剩余字符逐一进行比较。
在具体实施中,当按照从头至尾的顺序,将遍历至的比较行的剩余字符中当前位序的字符,分别与所述被比较行中的剩余字符进行一一比较,以确定所述被比较行中的剩余字符中是否存在与比较行的剩余字符中当前位序的字符相同的字符。
参见图14,按照从头至尾的顺序,首先获取比较行中的字符A1,并分别与被比较行中剩余字符B1~B11逐一进行比较,以确定被比较行中剩余字符B1~B11中是否存在与字符A1相同的字符。
步骤S1302:将遍历至的所述比较行的剩余字符中的当前位序的字符与所述被比较行中的剩余字符逐一进行比较。
步骤S1303:判断所述被比较行的剩余字符中是否存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符;当判断结果为是时,可以执行步骤S1305;反之,则可以执行步骤S1304。
步骤S1304:获取比较行的剩余字符中下一位序字符,并从步骤S1302开始执行。
在具体实施中,当通过比较确定被比较行的剩余字符中不存在与遍历至的比较行的剩余字符中当前位序的字符相同的字符时,则获取比较行的剩余字符中当前位序之后的下一位序的字符,并从步骤S1302开始执行,直至比较行的剩余字符遍历完毕。
步骤S1305:将所述比较行的剩余字符中当前位序的字符与所述被比较行的剩余字符中目标位序的字符标记为相同。
在具体实施中,当所述被比较行的剩余字符中存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符时,将所述比较行的剩余字符中当前位序的字符与所述被比较行的剩余字符中目标位序的字符标记为相同的字符。继续参见图14,当通过比较确定字符A1与字符B1相同时,可以将字符A1与字符B1标记为相同。
步骤S1306:将所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符,分别作为所述比较行的剩余字符和所述被比较行的剩余字符,并从步骤S1302重新开始执行,以找到其他的相同字符并记录,直至所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符全部遍历完成。
在具体实施中,当确定被比较行的剩余字符中存在与比较行的剩余字符中当前位序的字符相同的字符时,将被比较行中对应的字符作为目标位序的字符。同时,将所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符,分别作为所述比较行的剩余字符和所述被比较行的剩余字符,并从步骤S1302重新开始执行,以从所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符查找其他相同的字符并记录。
继续参见图14,当确定字符A1与字符B1相同时,将比较行的剩余字符中的字符A2至A10重新作为比较行的剩余字符,并将被比较行的剩余字符B2至B11分别作为被比较行的剩余字符,并执行从头至尾遍历进行比较,也即从步骤S1301重新开始执行,首先将字符A2分别与字符B2至B11进行比较,并找到字符B9与字符A2相同。接着,将字符A2与字符A9之间的字符,也即字符A3至A8,作为比较行的剩余字符;将字符B2至B9之间的字符,也即字符B3至B8,作为被比较行的剩余字符,并从步骤S1301重新开始执行,找到字符A4与字符B7相同并记录。
参见图15,当找到字符A4与字符B7相同时,将字符A4至A7之间的字符,也即字符A5和A6作为比较行的剩余字符,并将字符B4至B7之间的字符,即字符B5和B6作为被比较行的剩余字符,并从S1301重新开始执行,确定字符A5和A6与字符B5和B6均不相同,也即字符A4与字符B7为最后一次找到的比较行和所述被比较行的剩余字符中相同字符。
步骤S1307:获取最后一次记录的相同字符的信息,并将对应的比较行中的字符记为第一相同位序的字符,对应的被比较行中的字符记为第二相同位序的字符。
在具体实施中,为了便于描述,将最后一次记录的相同字符中,比较行中的对应的字符记为第一相同位序的字符,将被比较行中对应的的字符记为第二相同位序的字符。
继续参见图16,当确定最后一次记录的相同字符分别字符A4与字符B7时,将字符A4作为第一相同位序的字符,将字符B7作为第二相同位序的字符。
步骤S1308:将所述比较行的剩余字符中所述第一相同位序之后的字符作为所述比较行的剩余字符,将所述被比较行的剩余字符中所述第二相同位序之后的字符作为所述被比较行的剩余字符,并从S1302重新开始执行,以找到所述比较行的剩余字符中所述第一相同位序之后的字符中与所述被比较行的剩余字符中所述第二相同位序之后的字符中相同的字符并记录,直至所述比较行中所述第一相同位序之后的字符或者所述被比较行的剩余字符中当前位序至所述目标位序的字符遍历完成。
在具体实施中,当确定最后一次记录的相同字符的信息时,可以将所述比较行的剩余字符中所述第一相同位序之后的字符作为所述比较行的剩余字符,将所述被比较行的剩余字符中所述第二相同位序之后的字符作为所述被比较行的剩余字符,并重新执行所述从头至尾进行比较的操作,以在找到所述比较行的剩余字符中所述第一相同位序之后的字符,和被比较行的剩余字符中所述第二相同位序之后的字符中确定是否存在相同的字符,直至所述比较行中所述第一相同位序之后的字符或者所述被比较行的剩余字符中当前位序至所述目标位序的字符遍历完成。
继续参见图17,当确定最后一次记录的相同字符分别字符A4与字符B7时,将比较行的剩余字符A4之后的字符,也即字符A5至A10作为比较行的剩余字符,并将被比较行的剩余字符中B7之后的字符,也即字符B8至B11作为被比较行的剩余字符,重新执行从头至尾遍历进行比较的操作,从字符A5开始,找到字符B8与之相同。
接着,进一步更新比较行和被比较行的剩余字符中的字符,也即将字符A6至A10作为比较行的剩余字符,并将字符B9至B11作为被比较行的剩余字符,并重新执行从头至尾遍历进行比较的操作,从字符A6,找到字符B11与字符A6相同。
参见图18,由于字符B11为被比较行的剩余字符中的最后一个字符,因此,比较行与被比较行的本次比较结束。同时,因比较行中还剩余字符A7至字符A10,可以直接将剩余字符A7至字符A10直接记录为比较行与被比较行中差异部分。
这里需要强调的是,图10至图18所示的行内比较方法可以应用于任意数据行中的数据的比较,以提高数据比较的效率和准确性,本发明在此不做限制。
上述对本发明实施例中的方法进行了详细的描述,下面将对上述的方法对应的装置进行介绍。
图19示出了本发明实施例中的一种文件比较装置的结构。参见图19,本发明实施例中的一种文件比较装置190,可以包括替换单元191、行间比较单元192和行内比较单元193,其中:
替换单元191,适于将比较文件和被比较文件中的相应数据采用自定义的替换内容进行替换;
行间比较单元192,适于对经过替换后得到的比较文件和被比较文件执行行间比较,得到一一对应不同的数据行;
行内比较单元193,适于对所述比较文件和被比较文件中一一对应的不同数据行执行行内比较。
在本发明一实施例中,所述替换单元191,适于当所述比较文件和被比较文件为文本文件或者表数据逗号分隔值文件时,将所述比较文件和被比较文件中相应数据列的内容采用所述替换内容进行替换。
在本发明一实施例中,所述替换单元191,适于当所述比较文件和被比较文件为二进制文件时,将所述比较文件和被比较文件中的相应字节的内容采用所述替换内容进行替换。
在本发明一实施例中,所述行间比较单元192,包括第一获取子单元(未示出)和第一比较子单元(未示出);所述第一获取子单元,适于获取预配置的默认载入行数的信息;所述默认载入行数包括预设数量的比较行数的信息;所述第一比较子单元,适于基于预配置的默认载入行数的信息,对所述比较文件和被比较文件执行行间比较。
在本发明一实施例中,所述第一比较子单元,包括第一获取模块(未示出)和第一比较模块(未示出);所述第一获取模块,适于分别获取所述比较文件与所述被比较文件的当前比较窗口中的数据行;所述当前比较窗口内的数据行大于预设的第一阈值且小于预设的第二阈值,所述第一阈值小于所述默认载入行数,所述第二阈值大于所述默认载入行数;所述第一比较模块,适于将所述比较文件与所述被比较文件的当前比较窗口中的数据行进行比较。
在本发明一实施例中,所述第一比较模块,包括第一遍历子模块(未示出)和第一比较子模块(未示出),其中:
第一遍历子模块,适于对所述比较文件的当前比较窗口中数据行进行遍历,获取所述比较文件的当前比较窗口中当前位序的数据行,并与所述被比较文件的当前比较窗口内的数据行逐一进行比较;
第一比较子模块,适于当从所述被比较文件当前比较窗口内未查找到与所述比较文件当前比较窗口内的当前位序的数据行相同数据行时,获取所述比较文件的当前比较窗口内的下一位序的数据行,并执行所述与所述被比较文件的当前比较窗口内的数据行逐一进行比较的操作。
在本发明一实施例中,所述第一比较模块,还包括第一标记子模块(未示出)、第一判断子模块(未示出)、第一移除子模块(未示出)和第一添加子模块(未示出),其中:
第一标记子模块,适于当从所述被比较文件当前比较窗口内查找到与所述比较文件当前比较窗口内的当前位序的数据行相同的目标位序的数据行时,将所述比较文件当前比较窗口内的当前位序的数据行与所述被比较文件当前比较窗口内的目标位序的数据行标记为相同;
第一判断子模块,适于判断所述比较文件当前比较窗口内当前位序之前的数据行与所述被比较文件的当前比较窗口内的目标位序之前的数据行的数量是否相同;
第一移除子模块,适于当确定所述比较文件当前比较窗口内当前位序之前的数据行与所述被比较文件的当前比较窗口内目标位序之前的数据行的数量相同时,分别将当前比较窗口内所述前位序及之前的数据行,与所述被比较文件的当前比较窗口内所述目标位序及之前的数据行移除;
第一添加子模块,适于当确定所述比较文件当前比较窗口内当前位序之前的数据行与所述被比较文件的当前比较窗口内的目标位序之前的数据行的数量不同时,为数据行数量较少的所述比较文件当前比较窗口内当前位序与上一位序之间或者所述被比较文件的当前比较窗口内目标位序与上一位序之间添加对应数量的空数据行,以使得所述比较文件当前比较窗口内当前位序之前的数据行与所述被比较文件的当前比较窗口内的目标位序之前的数据行一一对应;
所述第一移除子模块,还适于当所述比较文件当前比较窗口内当前位序之前的数据行与所述被比较文件的当前比较窗口内的目标位序之前的数据行一一对应时,将所述比较文件中当前比较窗口内当前位序及之前的数据行,以及所述被比较文件中目标位序的数据行及之前的数据行移除。
在具体实施中,所述第一比较模块还可以包括第二判断子模块(未示出)和第二添加子模块(未示出),其中:
第二判断子模块,适于在所述比较文件或者被比较文件的当前比较窗口移除相应的数据行之后,判断所述比较文件或被比较文件当前比较窗口中剩余数据行的数量是否小于预设的第一阈值;
第二添加子模块,适于当确定所述比较文件或被比较文件当前比较窗口中剩余数据行的数量小于所述第一阈值时,获取所述比较文件中下一所述默认载入行数的数据行并添加至所述比较文件中当前比较窗口末尾,作为所述比较文件的当前比较窗口,或者将所述比较文件的中下一默认载入行数的数据行添加至所述被比较文件中当前比较窗口末尾,作为所述被比较文件的当前比较窗口,直至所述比较文件或者被比较文件的所有数据行遍历完成。
在具体实施中,所述行内比较单元193可以包括第三判断子单元(未示出)和行内比较子单元(未示出),其中:
第三判断子单元,适于判断所述比较文件和被比较文件中一一对应的不同数据行是否均为非空数据行;
行内比较子单元,适于当确定所述比较文件和被比较文件中一一对应的不同数据行均为非空数据行时,对所述比较文件和被比较文件中一一对应的非空数据行执行行内比较。
在具体实施中将所述比较文件和被比较文件中一一对应的非空数据行中一个作为比较行,另一个作为被比较行,所述行内比较子单元可以包括移除模块(未示出)和第二比较模块(未示出),其中:
移除模块,适于分别对所述比较行和被比较行的字符从尾至头进行遍历并比较,直至所述比较行与所述被比较行中相应位序的字符不同;将通过从尾至头遍历得到的所比较文件和所述被比较文件中相应位序的字符之后的字符标记为相同并分别从所述比较行和所述被比较行中移除;
第二比较模块,将所述比较行与所述被比较行中剩余的字符从头至尾进行比较,得到对应的比较结果。
在具体实施中,所述第二比较模块可以包括第一遍历子模块(未示出)和第二比较子模块(未示出),其中:
第一遍历子模块,适于从头至尾遍历所述比较行的剩余字符;
第二比较子模块,将遍历至的所述比较行的剩余字符中的当前位序的字符与所述被比较行中的剩余字符逐一进行比较;当确定所述被比较行的剩余字符中不存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符时,获取比较行的剩余字符中下一位序字符,并从所述将遍历至的所述比较行的剩余字符中的当前位序的字符与所述被比较行中的剩余字符逐一进行比较开始执行,直至所述比较行的剩余字符遍历完毕。
在具体实施中,所述第二比较模块还可以包括第二标记子模块(未示出)、第一更新子模块(未示出)、第三比较子模块(未示出)、获取子模块(未示出)和第二更新子模块(未示出)、第四比较子模块(未示出),其中:
第二标记子模块,适于当确定所述被比较行的剩余字符中存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符时,将所述比较行的剩余字符中当前位序的字符与所述被比较行的剩余字符中目标位序的字符标记为相同;
第一更新子模块,适于将所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符,分别作为所述比较行的剩余字符和所述被比较行的剩余字符;
第三比较子模块,适于从所述从头至尾遍历所述比较行的剩余字符开始执行,以找到其他的相同字符并记录,直至所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符全部遍历完成;
获取子模块,适于获取最后一次记录的相同字符的信息,并将对应的比较行中的字符记为第一相同位序的字符,对应的被比较行中的字符记为第二相同位序的字符;
第二更新子模块,适于将所述比较行的剩余字符中所述第一相同位序之后的字符作为所述比较行的剩余字符,将所述被比较行的剩余字符中所述第二相同位序之后的字符作为所述被比较行的剩余字符;
第四比较子模块,适于从所述从头至尾遍历所述比较行的剩余字符开始执行,以找到所述比较行的剩余字符中所述第一相同位序之后的字符中与所述被比较行的剩余字符中所述第二相同位序之后的字符中相同的字符并记录,直至所述比较行中所述第一相同位序之后的字符或者所述被比较行的剩余字符中当前位序至所述目标位序的字符遍历完成。
这里需要指出的是,上述的行间比较单元可以作为文件的数据行比较装置,以用于对文件的数据行之间的比较;行内比较单元也可以作为数据行之间的字符比较装置,用于对数据行中的字符进行比较,在此不再赘述。
在具体实施中,为了提高文件比较结果输出的灵活性,所述文件比较装置还可以包括输出单元194,其中:
输出单元194,适于按照预设的报表格式生成对应的比较报告并输出。
采用本发明实施例中的上述方案,通过将比较文件和被比较文件中的相应数据采用自定义的替换内容进行替换,并对经过替换后得到的比较文件和被比较文件执行行间比较和行内比较,可以将比较文件和被比较文件中无需进行比较的内容从比较内容中进行移除,可以有效减少比较数据的数量,从而可以提高文件比较的效率。
进一步地,在对经过替换后得到的比较文件和被比较文件执行行间比较时,采用浮动窗口大小将比较文件和被比较文件的比较内容限定在预设的数量范围内,可以避免由于比较内容较大所导致的比较失败,从而可以提高文件比较的可靠性。
进一步地,在执行不同非空数据行之间的行内比较时,首先从尾至头分别对比较行和被比较行进行遍历,直至所述比较行与所述被比较行中相应位序的字符不同,并将比较行和被比较行中处于从尾至头遍历至的相同位序且相同的字符从比较窗口中移除,以减少比较内容,从而可以提高行内比较的效率,进而可以提高文件比较的效率。
进一步地,在对所述比较行和被比较行的剩余字符进行比较,且确定所述比较行的剩余字符中第一位序的字符与被比较行的剩余字符中第二位序的字符相同时,将所述比较行的剩余字符中第一位序的字符与被比较行的剩余字符中第二位序的字符记录为相同位置,并将所述比较行和被比较行的剩余字符中第一位序至所述第二位序之间分别作为剩余字符继续寻找相同的字符,通过不断缩小比较窗口内的字符的数量,可以准确地定位所述比较行与所述被比较行中的不同位置,可以进一步提高数据行行内字符比较的准确性,进而可以进一步提高文件比较的准确性。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本发明实施例的方法及系统做了详细的介绍,本发明并不限于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

Claims (4)

1.一种数据行之间的字符比较方法,将待比较数据行中一个作为比较行,另一个作为被比较行,其特征在于,包括:
判断所述比较行和被比较行是否均为非空数据行;
当确定所述比较行和被比较行均为非空数据行时,对所述比较行和被比较行执行行内比较;
其中,所述对所述比较行和被比较行执行行内比较,包括:
将所述比较行与所述被比较行中剩余的字符从头至尾进行比较,得到对应的比较结果;
所述对所述比较行和被比较行执行行内比较,还包括:
分别对所述比较行和被比较行的字符从尾至头进行遍历并比较,直至所述比较行与所述被比较行中相应位序的字符不同;
将通过从尾至头遍历得到的比较文件和被比较文件中相应位序的字符之后的字符标记为相同并分别从所述比较行和所述被比较行中移除;
所述将所述比较行与所述被比较行中剩余的字符从头至尾进行比较,包括:
从头至尾遍历所述比较行的剩余字符;
将遍历至的所述比较行的剩余字符中的当前位序的字符与所述被比较行中的剩余字符逐一进行比较;
判断所述被比较行的剩余字符中是否存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符;
当确定所述被比较行的剩余字符中存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符时,包括:
将所述比较行的剩余字符中当前位序的字符与所述被比较行的剩余字符中目标位序的字符标记为相同;
将所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符,分别作为所述比较行的剩余字符和所述被比较行的剩余字符,并从所述从头至尾遍历所述比较行的剩余字符开始执行,以找到其他的相同字符并记录,直至所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符全部遍历完成;
获取最后一次记录的相同字符的信息,并将对应的比较行中的字符记为第一相同位序的字符,对应的被比较行中的字符记为第二相同位序的字符;
将所述比较行的剩余字符中所述第一相同位序之后的字符作为所述比较行的剩余字符,将所述被比较行的剩余字符中所述第二相同位序之后的字符作为所述被比较行的剩余字符,并从所述从头至尾遍历所述比较行的剩余字符开始执行,以找到所述比较行的剩余字符中所述第一相同位序之后的字符中与所述被比较行的剩余字符中所述第二相同位序之后的字符中相同的字符并记录,直至所述比较行中所述第一相同位序之后的字符或者所述被比较行的剩余字符中当前位序至所述目标位序的字符遍历完成。
2.根据权利要求1所述的数据行之间的字符比较方法,其特征在于,所述将所述比较行与所述被比较行中剩余的字符从头至尾进行比较,还包括:
当确定所述被比较行的剩余字符中不存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符时,获取比较行的剩余字符中下一位序字符,并从所述将遍历至的所述比较行的剩余字符中的当前位序的字符与所述被比较行中的剩余字符逐一进行比较开始执行,直至所述比较行的剩余字符遍历完毕。
3.一种数据行之间的字符比较装置,其特征在于,将待比较的数据行中一个作为比较行,另一个作为被比较行,所述装置包括行内比较单元;所述行内比较单元包括:
第三判断子单元,适于判断所述比较行和被比较行是否均为非空数据行;
行内比较子单元,适于当确定所述比较行和被比较行均为非空数据行时,对比较文件和被比较文件中一一对应的非空数据行执行行内比较;
其中,所述行内比较子单元包括:
第二比较模块,将所述比较行与所述被比较行中剩余的字符从头至尾进行比较,得到对应的比较结果;
所述述行内比较子单元还包括:
移除模块,适于分别对所述比较行和被比较行的字符从尾至头进行遍历并比较,直至所述比较行与所述被比较行中相应位序的字符不同;将通过从尾至头遍历得到的比较文件和被比较文件中相应位序的字符之后的字符标记为相同并分别从所述比较行和所述被比较行中移除;
所述第二比较模块,包括:
第一遍历子模块,适于从头至尾遍历所述比较行的剩余字符;
第二比较子模块,将遍历至的所述比较行的剩余字符中的当前位序的字符与所述被比较行中的剩余字符逐一进行比较;判断所述被比较行的剩余字符中是否存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符;
第二标记子模块,适于当确定所述被比较行的剩余字符中存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符时,将所述比较行的剩余字符中当前位序的字符与所述被比较行的剩余字符中目标位序的字符标记为相同;
第一更新子模块,适于将所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符,分别作为所述比较行的剩余字符和所述被比较行的剩余字符;
第三比较子模块,适于从所述从头至尾遍历所述比较行的剩余字符开始执行,以找到其他的相同字符并记录,直至所述比较行和所述被比较行的剩余字符中当前位序至所述目标位序的字符全部遍历完成;
获取子模块,适于获取最后一次记录的相同字符的信息,并将对应的比较行中的字符记为第一相同位序的字符,对应的被比较行中的字符记为第二相同位序的字符;
第二更新子模块,适于将所述比较行的剩余字符中所述第一相同位序之后的字符作为所述比较行的剩余字符,将所述被比较行的剩余字符中所述第二相同位序之后的字符作为所述被比较行的剩余字符;
第四比较子模块,适于从所述从头至尾遍历所述比较行的剩余字符开始执行,以找到所述比较行的剩余字符中所述第一相同位序之后的字符中与所述被比较行的剩余字符中所述第二相同位序之后的字符中相同的字符并记录,直至所述比较行中所述第一相同位序之后的字符或者所述被比较行的剩余字符中当前位序至所述目标位序的字符遍历完成。
4.根据权利要求3所述的数据行之间的字符比较装置,其特征在于,所述第二比较子模块,还适于,当确定所述被比较行的剩余字符中不存在与所述遍历至的比较行的剩余字符中的当前位序的字符相同的目标位序的字符时,获取比较行的剩余字符中下一位序字符,并从所述将遍历至的所述比较行的剩余字符中的当前位序的字符与所述被比较行中的剩余字符逐一进行比较开始执行,直至所述比较行的剩余字符遍历完毕。
CN201611270751.0A 2016-12-30 2016-12-30 数据行之间的字符比较方法及装置 Active CN106844565B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611270751.0A CN106844565B (zh) 2016-12-30 2016-12-30 数据行之间的字符比较方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611270751.0A CN106844565B (zh) 2016-12-30 2016-12-30 数据行之间的字符比较方法及装置

Publications (2)

Publication Number Publication Date
CN106844565A CN106844565A (zh) 2017-06-13
CN106844565B true CN106844565B (zh) 2020-07-07

Family

ID=59118360

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611270751.0A Active CN106844565B (zh) 2016-12-30 2016-12-30 数据行之间的字符比较方法及装置

Country Status (1)

Country Link
CN (1) CN106844565B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101807207A (zh) * 2010-03-22 2010-08-18 北京大用科技有限责任公司 一种基于内容差异比较的文档共享方法
CN102929900A (zh) * 2012-01-16 2013-02-13 中国科学院北京基因组研究所 一种字符串匹配的方法及装置
CN103067203A (zh) * 2012-12-25 2013-04-24 华为技术有限公司 策略一致性审计方法、装置及设备
CN104050269A (zh) * 2014-06-23 2014-09-17 上海帝联信息科技股份有限公司 日志压缩方法及装置、解压缩方法及装置
CN105247509A (zh) * 2013-03-11 2016-01-13 微软技术许可有限责任公司 检测并重构固定格式文档中的东亚布局特征

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101807207A (zh) * 2010-03-22 2010-08-18 北京大用科技有限责任公司 一种基于内容差异比较的文档共享方法
CN102929900A (zh) * 2012-01-16 2013-02-13 中国科学院北京基因组研究所 一种字符串匹配的方法及装置
CN103067203A (zh) * 2012-12-25 2013-04-24 华为技术有限公司 策略一致性审计方法、装置及设备
CN105247509A (zh) * 2013-03-11 2016-01-13 微软技术许可有限责任公司 检测并重构固定格式文档中的东亚布局特征
CN104050269A (zh) * 2014-06-23 2014-09-17 上海帝联信息科技股份有限公司 日志压缩方法及装置、解压缩方法及装置

Also Published As

Publication number Publication date
CN106844565A (zh) 2017-06-13

Similar Documents

Publication Publication Date Title
CN106445476B (zh) 一种代码变更信息确定方法、装置及电子设备
CN112714359B (zh) 视频推荐方法、装置、计算机设备及存储介质
CN105205053A (zh) 一种数据库增量日志解析方法及系统
US9087014B1 (en) Tape backup and restore in a disk storage environment
CN106648643A (zh) 渠道包生成方法及装置、终端和服务器
WO2018006721A1 (zh) 日志文件的存储方法及装置
CN104714957A (zh) 一种表结构的变更方法及装置
CN107977359B (zh) 一种影视剧本场景信息的提取方法
CN106844565B (zh) 数据行之间的字符比较方法及装置
US9535618B2 (en) Tape backup and restore in a disk storage environment with intelligent data placement
CN106569986B (zh) 字符串替换方法和装置
CN109639487B (zh) 策略配置的方法、装置、网络设备及存储介质
US10705738B2 (en) Method, apparatus, storage medium, and terminal for optimizing memory card performance
CN111381905B (zh) 一种程序处理方法、装置及设备
CN107908500B (zh) 一种坏块识别方法及装置
CN107688624B (zh) 一种日志索引构建方法及装置
CN113703753B (zh) 用于产品开发的方法、装置和产品开发系统
CN112416811B (zh) 基于数据关联度的垃圾回收方法、闪存及装置
CN114861003A (zh) 一种指定目录下的对象列举方法、装置及其介质
CN110019086A (zh) 基于分布式文件系统的多副本读取方法、设备及存储介质
JP4527697B2 (ja) 漏洩個人情報検索システム、漏洩個人情報検索方法、漏洩個人情報検索装置およびプログラム
CN109947429B (zh) 数据处理方法及装置
CN110874416B (zh) 一种图像特征值存储方法、装置和电子设备
CN113821193A (zh) 一种信息生成的方法、装置和存储介质
CN106844305A (zh) 文件中的数据行比较方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230605

Address after: 200333, Room 18, 6th Floor, Building 21, No. 958 Zhenbei Road, Putuo District, Shanghai

Patentee after: Shanghai Yixu Network Technology Co.,Ltd.

Address before: 200333, 2nd Floor, Building 21, Lane 879, Zhongjiang Road, Putuo District, Shanghai

Patentee before: SHANGHAI DNION INFORMATION TECHNOLOGY CO.,LTD.