页边界处理方法、装置、存储介质和电子设备与流程

文档序号:17774496发布日期:2019-05-28 19:52阅读:157来源:国知局
页边界处理方法、装置、存储介质和电子设备与流程

本公开涉及文档技术领域,具体地,涉及一种页边界处理方法、装置、存储介质和电子设备。



背景技术:

在日常应用中,文件或文本的比较在很多领域都是一个比较常见的需求。例如对比两个文件中的两篇文章(例如对比两个word文件),或者对比两个文件中的代码(例如两个脚本中的代码差异)等等。进行文件比对的目的通常是为了实现两个文件的行或段落的对齐,从而找到内容相关性和差异。由于通过文件对比能够帮助用户快速地找到两个文件中的相关性和差异,因此无论是对于个人还是多人协作,文件对比都是日常应用中的一个重要功能,能够提高用户的工作效率。例如在目前的软件开发中,基本都是由多人协作开发完成,因此对于其他人修改的文件,通过文件比较可以快速地找到相同的内容,并定位差异的位置,从而方便协作人员进行后续处理,降低开发人员的工作量。

在现有的文件对比技术中,通常是进行跨页对比的,即如果待对比的文件有多页,那么在对比时通常是将文件中的多页当成一个大页来进行对比。在展示对比结果时,现有技术中有时会采用分页展示对比结果的方式,但是采用分页展示对比结果的方式,会在页数较多时会增加硬件资源的消耗。因此,为了节约资源,通常会采用合并展示的方式(即在一个大页里展示对比结果),但是采用合并展示对比结果,会存在排版困难的问题,例如相关的内容难以在位置上对齐的问题,无法识别内容所属的页。



技术实现要素:

本公开的目的是提供一种页边界处理方法、装置、存储介质和电子设备,用于解决采用合并展示对比结果的方式时存在的排版困难的问题。

为了实现上述目的,本公开的第一方面,提供一种页边界处理方法,该方法包括:

在第一文件和第二文件中以每个预设单位的内容作为一个元素,对所述第一文件和所述第二文件进行对比,以获取第一文件与第二文件的最长公共子序列,所述最长公共子序列为所述第一文件和所述第二文件中的元素排列顺序一致的最长公共部分;

在根据所述最长公共子序列将所述第一文件和所述第二文件的共通元素进行索引对齐之后,在所述第一文件和所述第二文件中的指定位置插入页边界标记,所述指定位置为所述第一文件和所述第二文件中每页的起始位置或终止位置;

通过更新所述第一文件和所述第二文件中元素的索引,将所述第一文件中的每个共通元素与所述第二文件中对应的共通元素进行位置对齐。

可选地,所述在第一文件和第二文件中以每个预设单位的内容作为一个元素,对所述第一文件和所述第二文件进行对比,包括:

当所述第一文件包含多页时,记录所述第一文件中的每页的起始位置和终止位置;

将所述第一文件的所有页合并为一页,以得到合并为一页的第一文件;

当所述第二文件包含多页时,记录所述第二文件中的每页的起始位置和终止位置;

将所述第二文件的所有页合并为一页,以得到合并为一页的第二文件;

在所述合并为一页的第一文件中,以每个预设单位的内容作为一个元素将所述合并为一页的第一文件进行序列化,以得到第一元素序列;

在所述合并为一页的第二文件中,以每个所述预设单位的内容作为一个元素将所述合并为一页的第二文件进行序列化,以得到第二元素序列;

通过将所述第一元素序列与所述第二元素序列进行对比,获取所述最长公共子序列。

可选地,所述在根据所述最长公共子序列将所述第一文件和所述第二文件的共通元素进行索引对齐之后,在所述第一文件和所述第二文件中的指定位置插入页边界标记,所述指定位置为所述第一文件和所述第二文件中每页的起始位置或终止位置,包括:

根据所述最长公共子序列,确定所述第一文件中的共通元素和删除元素,以及所述第二文件中的共通元素和添加元素,所述删除元素为所述第一文件中除所述共通元素之外的其他元素,所述添加元素为所述第二文件中除所述共通元素之外的其他元素;

通过将所述第一文件中的共通元素与所述第二文件中的共通元素建立索引对应关系,将所述第一文件中的共通元素与所述第二文件中的共通元素进行索引对齐;

在所述第一文件中每页的起始位置和所述第二文件中每页的起始位置插入页边界标记,或者在所述第一文件中每页的终止位置和所述第二文件中每页的终止位置插入页边界标记,每个所述页边界标记占用一个元素的长度。

可选地,所述通过更新所述第一文件和所述第二文件中元素的索引,将所述第一文件中的每个共通元素与所述第二文件中对应的共通元素进行位置对齐,包括:

当所述第一文件中的任一共通元素与所述第二文件中的对应共通元素的索引不同时,通过插入空白元素的方式将所述任一共通元素的索引与所述对应共通元素的索引调整为相同,将所述第一文件中的每个共通元素与所述第二文件中对应的共通元素进行位置对齐。

可选地,所述当所述第一文件中的任一共通元素与所述第二文件中的对应共通元素的索引不同时,通过插入空行的方式将所述任一共通元素的索引与所述对应共通元素的索引调整为相同,将所述第一文件中的每个共通元素的索引与所述第二文件中对应的共通元素进行位置对齐,包括:

确定所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引是否相同;

当所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引相同时,取i=i+1后重新执行所述确定所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引是否相同的步骤;

当所述第一文件的第i个共通元素的索引小于所述第二文件的第i个共通元素的索引时,在所述第一文件的第i个共通元素前插入n个空白元素,并将所述第一文件的第i个共通元素以及所述第一文件的第i个共通元素之后的元素的索引增加n;

当所述第一文件的第i个共通元素的索引大于所述第二文件的第i个共通元素的索引时,在所述第二文件的第i个共通元素前插入n个空白元素,并将所述第二文件的第i个共通元素以及所述第二文件的第i个共通元素之后的元素的索引增加n,所述n为所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引的差值的绝对值;

取i=i+1后重新执行所述确定所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引是否相同的步骤,直至将所述第一文件中的每个共通元素与所述第二文件中对应的共通元素进行位置对齐。

第二方面,提供一种页边界处理装置,其特征在于,所述装置包括:

对比模块,用于在第一文件和第二文件中以每个预设单位的内容作为一个元素,对所述第一文件和所述第二文件进行对比,以获取第一文件与第二文件的最长公共子序列,所述最长公共子序列为所述第一文件和所述第二文件中的元素排列顺序一致的最长公共部分;

插入模块,用于在根据所述最长公共子序列将所述第一文件和所述第二文件的共通元素进行索引对齐之后,在所述第一文件和所述第二文件中的指定位置插入页边界标记,所述指定位置为所述第一文件和所述第二文件中每页的起始位置或终止位置;

更新模块,通过更新所述第一文件和所述第二文件中元素的索引,将所述第一文件中的每个共通元素与所述第二文件中对应的共通元素进行位置对齐。

可选地,所述对比模块,包括:

记录子模块,用于当所述第一文件包含多页时,记录所述第一文件中的每页的起始位置和终止位置;

合并子模块,用于将所述第一文件的所有页合并为一页,以得到合并为一页的第一文件;

所述记录子模块,还用于当所述第二文件包含多页时,记录所述第二文件中的每页的起始位置和终止位置;

所述合并子模块,还用于将所述第二文件的所有页合并为一页,以得到合并为一页的第二文件;

序列化子模块,用于在所述合并为一页的第一文件中,以每个预设单位的内容作为一个元素将所述合并为一页的第一文件进行序列化,以得到第一元素序列;

所述序列化子模块,还用于在所述合并为一页的第二文件中,以每个所述预设单位的内容作为一个元素将所述合并为一页的第二文件进行序列化,以得到第二元素序列;

对比子模块,用于通过将所述第一元素序列与所述第二元素序列进行对比,获取所述最长公共子序列。

可选地,所述插入模块,包括:

元素识别子模块,用于根据所述最长公共子序列,确定所述第一文件中的共通元素和删除元素,以及所述第二文件中的共通元素和添加元素,所述删除元素为所述第一文件中除所述共通元素之外的其他元素,所述添加元素为所述第二文件中除所述共通元素之外的其他元素;

索引对齐子模块,用于通过将所述第一文件中的共通元素与所述第二文件中的共通元素建立索引对应关系,将所述第一文件中的共通元素与所述第二文件中的共通元素进行索引对齐;

标记插入子模块,用于在所述第一文件中每页的起始位置和所述第二文件中每页的起始位置插入页边界标记,或者在所述第一文件中每页的终止位置和所述第二文件中每页的终止位置插入页边界标记,每个所述页边界标记占用一个元素的长度。

可选地,所述更新模块,用于:

当所述第一文件中的任一共通元素与所述第二文件中的对应共通元素的索引不同时,通过插入空白元素的方式将所述任一共通元素的索引与所述对应共通元素的索引调整为相同,将所述第一文件中的每个共通元素与所述第二文件中对应的共通元素进行位置对齐。

可选地,所述更新模块,包括:

索引对比子模块,用于确定所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引是否相同;

当所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引相同时,取i=i+1后由所述索引对比子模块重新执行所述确定所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引是否相同的步骤;

插入子模块,用于当所述第一文件的第i个共通元素的索引小于所述第二文件的第i个共通元素的索引时,在所述第一文件的第i个共通元素前插入n个空白元素,并将所述第一文件的第i个共通元素以及所述第一文件的第i个共通元素之后的元素的索引增加n;

所述插入子模块,还用于当所述第一文件的第i个共通元素的索引大于所述第二文件的第i个共通元素的索引时,在所述第二文件的第i个共通元素前插入n个空白元素,并将所述第二文件的第i个共通元素以及所述第二文件的第i个共通元素之后的元素的索引增加n,所述n为所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引的差值的绝对值;

取i=i+1后由所述索引对比子模块重新执行所述确定所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引是否相同的步骤,直至将所述第一文件中的每个共通元素与所述第二文件中对应的共通元素进行位置对齐。

第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面所述方法的步骤。

第四方面,提供一种电子设备,包括:存储器,其上存储有计算机程序;

处理器,用于执行所述存储器中的所述计算机程序,以实现上述第一方面所述方法的步骤。

在上述技术方案中,在第一文件和第二文件中以每个预设单位的内容作为一个元素,对所述第一文件和所述第二文件进行对比,以获取第一文件与第二文件的最长公共子序列,所述最长公共子序列为所述第一文件和所述第二文件中的元素排列顺序一致的最长公共部分;在根据所述最长公共子序列将所述第一文件和所述第二文件的共通元素进行索引对齐之后,在所述第一文件和所述第二文件中的指定位置插入页边界标记,所述指定位置为所述第一文件和所述第二文件中每页的起始位置或终止位置;通过更新所述第一文件和所述第二文件中元素的索引,将所述第一文件中的每个共通元素与所述第二文件中对应的共通元素进行位置对齐。通过上述技术方案,提供了一种页边界的处理机制,能够在文件内容对比的过程中插入页边界标记,并将第一文件和第二文件的对应的共通元素进行位置对齐,从而使得后续在进行合并展示时,第一文件和第二文件中的相关内容在位置上是对齐的,并且能够识别出内容所属的页,因此能够解决在采用合并展示对比结果时的排版困难的问题。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1是根据本公开一示例性实施例示出的一种页边界处理方法的流程示意图。

图2是根据本公开一示例性实施例示出的另一种页边界处理方法的流程示意图。

图3是根据本公开一示例性实施例示出的另一种页边界处理方法的流程示意图。

图4a是根据本公开一示例性实施例示出的一种文件对比的示意图。

图4b是根据本公开一示例性实施例示出的另一种文件对比的示意图。

图4c是根据本公开一示例性实施例示出的一种插入页边界标记的示意图。

图4d是根据本公开一示例性实施例示出的一种插入页边界标记后进行对齐的示意图。

图5是根据本公开一示例性实施例示出的一种页边界处理装置的框图。

图6是根据本公开一示例性实施例示出的一种对比模块的框图。

图7是根据本公开一示例性实施例示出的一种插入模块的框图。

图8是根据本公开一示例性实施例示出的一种更新模块的框图。

图9是根据一示例性实施例示出的一种电子设备的框图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

图1是根据本公开一示例性实施例示出的一种页边界处理方法的流程示意图,如图1所示,该方法包括:

步骤101,在第一文件和第二文件中以每个预设单位的内容作为一个元素,对该第一文件和该第二文件进行对比,以获取第一文件与第二文件的最长公共子序列。该最长公共子序列为该第一文件和该第二文件中的元素排列顺序一致的最长公共部分。

其中,在进行第一文件和第二文件的对比之前,首先需要将第一文件和第二文件进行序列化,序列化可以理解为是在文件中以每个预设单位的内容作为一个元素,从而一个文件就可以看作是由多个上述元素按顺序组成的一个元素序列。示例的,上述第一文件和第二文件可以是记录有文字或者代码的文件,该预设单位内容可以是词语、句子、行或段落等等,其可以根据需要来设置,即可以将一个词、一句话、一行或一段作为一个整体看待,当作一个元素。

步骤102,在根据该最长公共子序列将该第一文件和该第二文件的共通元素进行索引对齐之后,在该第一文件和该第二文件中的指定位置插入页边

界标记,该指定位置为第一文件和第二文件中每页的起始位置或终止位置。

示例的,由于将该第一文件和第二文件以每个预设单位的内容作为一个元素,则可以得到第一文件对应的元素序列,以及第二文件对应的元素序列。然后按照第一文件对应的元素序列,以及第二文件对应的元素序列,对该第一文件和该第二文件进行对比可以确定第一文件与第二文件的最长公共子序列。其中,该最长公共子序列为该第一文件和该第二文件中的元素排列顺序一致的最大公共部分。

举例来说,假设以行作为该预设单位,则第一文件和第二文件中的每行就是上述的一个元素,如果用一个字母表示一行,则假设完成序列化的第一文件和第二文件可以分别表示为以下的序列:

第一文件=aaaccgtgagt

第二文件=cacccctaagg

其中,上述第一文件和第二文件中的每个字母均表示文件中的一行,字母在序列中的顺序就表示了该字母所表示的行在文件中的顺序。通过对比第一文件的序列和第二文件的序列即可确定,第一文件和第二文件的最长公共子序列。该最长公共子序列,即第一文件和第二文件中所拥有的行内容相同,且排列顺序一致的最长共有序列,因此可以确定该最长公共子序列,也即第一文件与第二文件的最长公共子序列为:s=acctag。上述的上述预设单位也可以是词语、句子、行或段落,其确定最长公共子序列与行为单位时的方法相同,不再赘述。

而最长公共子序列中的元素就是第一文件和第二文件中的共通(common)元素,第一文件中除了共通元素外的其他元素为删除(omitted)元素,第二文件中除了共通元素外的其他元素为添加(added)元素。在确定了共通元素、删除元素和添加元素后,可以对第一文件和第二文件的共通元素进行索引对齐(也称为拉手),即将第一文件中的每个共通元素的索引与第二文件中的对应共通元素的索引建立对应关系。在进行文件对比时,如果文件中存在空白元素,则可以先记录空白元素的位置,然后对空白元素进行忽略,在完成对比找到共通元素,并进行上述索引对齐后,可以再根据之前记录的空白元素的位置进行空白元素复位。其中,空白元素的与其他元素的长度相同,例如当元素的单位为行时,空白元素就为空行。

而后,可以在第一文件和第二文件中的每页的起始位置插入页边界标记,或者可以在第一文件和第二文件中的每页的终止位置插入页边界标记。另外,需要说明的是,插入的每个页边界标记占用一个元素的长度,例如当元素的单位是行时,插入的页边界标记就占一行的长度,从而每插入一个页边界标记后,该页边界标记的插入位置处的元素以及之后的元素需要向后移动一行,相应的这些移动的元素的索引号也会随之改变。此外,每页的起始位置和终止位置,可以是在将第一文件和第二文件进行序列化之前记录的。

步骤103,通过更新第一文件和第二文件中元素的索引,将第一文件中的每个共通元素与所述第二文件中对应的共通元素进行位置对齐。

如步骤102中所述,由于插入页边界标记后,该页边界标记的插入位置处的元素以及之后的元素需要相应的向后移动,相应的这些移动的元素的索引号也会随之改变。因此在插入页边界标记后,第一文件中的某个(或某些)共通元素与所述第二文件中对应的共通元素的索引不一致,因此位置可能是没有对齐的。因此,需要将插入页边界标记后的第一文件和第二文件中的元素的索引进行更新,以使得第一文件中的每个共通元素的索引与所述第二文件中对应的共通元素的索引均调整为一致,从而使得第一文件中的每个共通元素与所述第二文件中对应的共通元素的位置对齐。

通过上述技术方案,提供了一种页边界的处理机制,能够在文件内容对比的过程中插入页边界标记,并将第一文件和第二文件的对应的共通元素进行位置对齐,从而使得后续在进行合并展示时,第一文件和第二文件中的相关内容在位置上是对齐的,并且能够识别出内容所属的页,因此能够解决在采用合并展示对比结果时的排版困难的问题。

图2是根据本公开一示例性实施例示出的另一种页边界处理方法的流程示意图,如图2所示,步骤101可以包括以下步骤:

步骤1011,当第一文件包含多页时,记录第一文件中的每页的起始位置和终止位置。

步骤1012,将第一文件的所有页合并为一页,以得到合并为一页的第一文件。

步骤1013,当第二文件包含多页时,记录第二文件中的每页的起始位置和终止位置。

步骤1014,将第二文件的所有页合并为一页,以得到合并为一页的第二文件。

步骤1015,在合并为一页的第一文件中,以每个预设单位的内容作为一个元素将合并为一页的第一文件进行序列化,以得到第一元素序列。

步骤1016,在合并为一页的第二文件中,以每个该预设单位的内容作为一个元素将合并为一页的第二文件进行序列化,以得到第二元素序列。

步骤1017,通过将该第一元素序列与该第二元素序列进行对比,获取该最长公共子序列。

即,在进行两个文件的对比时,如果任一文件包含多页,那么需要将该文件的所有页合并为一个大页,在合并前记录每页的起始位置和终止位置(以便后续插入页边界标记时使用)。本公开中以第一文件和第二文件都包含多页为例,则将合并后的第一文件和第二文件,以每个预设单位的内容作为一个元素进行序列化,例如,以行为元素单位时,可以得到第一文件和第二文件对应的行序列。

图3是根据本公开一示例性实施例示出的另一种页边界处理方法的流程示意图,如图3所示,步骤102可以包括以下步骤:

步骤1021,根据该最长公共子序列,确定该第一文件中的共通元素和删除元素,以及该第二文件中的共通元素和添加元素。

其中,上述删除元素为该第一文件中除共通元素之外的其他元素,上述添加元素为该第二文件中除共通元素之外的其他元素。

步骤1022,通过将该第一文件中的共通元素与该第二文件中的共通元素建立索引对应关系,将该第一文件中的共通元素与该第二文件中的共通元素进行索引对齐。

示例的,还是以上述的第一文件=aaaccgtgagt,第二文件=cacccctaagg为例进行说明。也即第一文件与第二文件的最长公共子序列为:s=acctag。上述的预设单位也可以是词语、句子、行或段落,其确定最长公共子序列的方法与行为单位时的方法相同。其中,将该第一文件中的共通元素与该第二文件中的共通元素建立索引对应关系后,即可实现第一文件中的每个共通元素与该第二文件中的对应共通元素的索引对齐。其中,对应的共通元素指的是在两个文件中,内容及顺序一致的共通元素。

示例的,如图4a所示,示出了第一文件的第一元素序列:aaa□ccgtgagt,以及第二文件的第二元素序列:ca□cccc□taagg,其中,□表示一个空白元素,其长度与字母所表示的元素的长度相同,例如当一个字母表示一行时,□就表示空行。在第一文件的字母上方标记出两个文件中每个元素的索引,在第一文件的字母上方以及第二文件的字母下方,用“=”表示共通元素“-”表示删除元素,“+”表示添加元素,“c”表示更新元素(c表示changed)。其中,需要说的是,当在第一文件中的共通元素的第一间隙处存在n个删除元素,且在第二文件中的共通元素的第二间隙处存在m个添加元素时,该第一间隙中的n个删除元素和第二间隙中的n个添加元素即为更新元素,该第一间隙是第一文件中的任一共通元素间隙,第二间隙是与第一间隙位置对应的共通元素间隙。其中,该共通元素间隙指两个共通元素之间的间隙,还包括首个共通元素之前的位置,以及最后一个共通元素之后的位置。

在如图4a中两个文件中对应的两个共通元素之间具有实线连线,表示这两个共通元素的索引已建立对应关系,即索引对齐了。

进一步的,可以看出图4a中有些具有实线连线的两个共通元素的索引并不一致,也就是说这两个共通元素在位置上没有对齐,因此可选的,还可以通过加空白元素的方式(空白元素所占的长度为一个元素的单位长度,例如元素以行为单位时,就可以插入空行,每个空行占一行),将图4a中没有对齐的共通元素进行对齐。位置对齐后的效果可以如图4b所示,具有实线连线的任意两个共通元素的位置都对齐了(索引也一致了)。

步骤1023,在该第一文件中每页的起始位置和该第二文件中每页的起始位置插入页边界标记,或者在该第一文件中每页的终止位置和该第二文件中每页的终止位置插入页边界标记。

其中,每个页边界标记占用一个元素的长度,即也可以将插入的每个页边界标记也看做是一个元素。因此第一文件的上述第一元素序列插入页边界标记后可以看做是得到了一个新的元素序列,可以记为第三元素序列,同理第二文件的第二元素序列插入页边界标记后得到的新的元素序列,可以记为第四元素序列。

示例的,以在图4b所示的第一文件和第二文件的基础上进行上述的插入页边界标记的操作为例。由于每个页边界标记占用一个元素的长度,因此每插入一个页边界标记b后,插入位置处的元素及其之后的元素的位置后移一个元素长度,索引也相应的增加。例如,在图4b中所示的第一文件中索引为1的a和第二文件中索引为1的c前均插入了页边界标记b,因此引起插入位置之后的各个元素均的索引均加1,而后在第二文件的索引为7的c处插入页边界标记b之后,该索引为7的c及其之后的各个元素的索引均加1,而后在第一文件的索引为13的a处插入页边界标记b之后,该索引为13的a及其之后的各个元素的索引均加1,从而完成插入页边界标记的操作后的结果如图4c所示,相比于图4b,该第一文件的元素序列由aaa□□□ccg□tga□□gt变为baaa□□□ccg□tgba□□gt,索引范围从0-16变为0-18,第二文件的元素序列由c□a□cccc□□t□aagg变为bc□a□cbccc□□t□aabgg,索引范围从0-16变为0-18。

进一步的,步骤103所述的通过更新该第一文件和该第二文件中元素的索引,将该第一文件中的每个共通元素与该第二文件中对应的共通元素进行位置对齐的步骤可以通过以下方式实现:

当该第一文件中的任一共通元素与该第二文件中的对应共通元素的索引不同时,通过插入空白元素的方式将该任一共通元素的索引与该对应共通元素的索引调整为相同,将该第一文件中的每个共通元素与该第二文件中对应的共通元素进行位置对齐。示例的,可以包括以下步骤:

步骤1031,确定该第一文件的第i个共通元素的索引与该第二文件的第i个共通元素的索引是否相同。

步骤1032,当该第一文件的第i个共通元素的索引与该第二文件的第i个共通元素的索引相同时,取i=i+1后重新执行步骤1031。

步骤1033,当该第一文件的第i个共通元素的索引小于该第二文件的第i个共通元素的索引时,在该第一文件的第i个共通元素前插入n个空白元素,并将该第一文件的第i个共通元素以及该第一文件的第i个共通元素之后的元素的索引增加n;

步骤1034,当该第一文件的第i个共通元素的索引大于该第二文件的第i个共通元素的索引时,在该第二文件的第i个共通元素前插入n个空白元素,并将该第二文件的第i个共通元素以及该第二文件的第i个共通元素之后的元素的索引增加n。其中n为该第一文件的第i个共通元素的索引与该第二文件的第i个共通元素的索引的差值的绝对值。

在执行步骤1033或1034后,取i=i+1后重新执行步骤1031,即进行下一组共通元素(一组共通元素指第一文件和第二文件中已经索引对齐的两个共通元素,即图中具有实线连线的两个共通元素)的对比,每当有一组共通元素的索引不一致时,即执行步骤1033或1034,以此类推,直至将第一文件中的每个共通元素与第二文件中对应的共通元素都调整为一致,也就完成了第一文件中的每个共通元素与第二文件中对应的共通元素的位置对齐。

示例的,以图4c所示的插入页边界标记后的第一文件和第二文件为例进行说明。从图4c中的可以看出,第一文件中索引为7的c和第二文件中索引为8的c这一组共同元素索引不一致,因此可以在第一文件中索引为7的c之前插入空白元素,以使第一文件中索引为7的c以及其后的元素后移,从而该第一文件中索引为7的c的索引变为8,其后的c、g、t、g、b、a、g、t的索引分别变为9、10、12、13、14、15、19、20,从而上述一组共通元素c的索引变为一致。然后,进行下一组共通元素的对比,下一组共通元素是第一文件中索引变为12的t和第二文件中索引为12的t,索引一致,则继续进行下一组共通元素的对比,下一组共通元素为第一文件中索引变为15的a和第二文件中索引为14的a,索引不一致,因此可以在第二文件中索引为14的a之前插入空白元素,以使第二文件中索引为14的a以及其后的元素后移,从而该第二文件中索引为14的a的索引变为15,其后的a、b、g、g的索引分别变为16、17、18、19,从而使这一组共通元素a的索引变为一致。然后,进行下一组共通元素的对比,下一组共通元素是第一文件中索引变为19的g和第二文件中索引变为19的g,索引一致。此时的第一文件和第二文件的元素序列可以如图4d所示,从图4c中可以看出,每一组具有实线连线的共通元素的索引均一致,位置已对齐。

由于共通元素是第一文件和第二文件中内容相同的元素,因此在第一文件中的每个共通元素与第二文件中对应的共通元素的位置对齐之后,第一文件和第二文件中的内容相同的部分在位置上就一一对齐了,因此在后续进行展示时,可以采用合并展示的方式将第一文件和第二文件的对比结果展示在一个大页中,并且第一文件和第二文件中的内容相同的部分都是一一对齐的,而且由于插入有页边界标记,因此能够容易地确定各个内容所属的页数,从而能够解决采用合并展示对比结果时排版困难的问题。

图5是根据本公开一示例性实施例示出的一种页边界处理装置的框图,如图5所示,该装置100可以包括:

对比模块1010,用于在第一文件和第二文件中以每个预设单位的内容作为一个元素,对所述第一文件和所述第二文件进行对比,以获取第一文件与第二文件的最长公共子序列,所述最长公共子序列为所述第一文件和所述第二文件中的元素排列顺序一致的最长公共部分;

插入模块1020,用于在根据所述最长公共子序列将所述第一文件和所述第二文件的共通元素进行索引对齐之后,在所述第一文件和所述第二文件中的指定位置插入页边界标记,所述指定位置为所述第一文件和所述第二文件中每页的起始位置或终止位置;

更新模块1030,通过更新所述第一文件和所述第二文件中元素的索引,将所述第一文件中的每个共通元素与所述第二文件中对应的共通元素进行位置对齐。

可选的,图6是根据本公开一示例性实施例示出的一种对比模块的框图,如图6所示,该对比模块1010,可以包括:

记录子模块1011,用于当所述第一文件包含多页时,记录所述第一文件中的每页的起始位置和终止位置;

合并子模块1012,用于将所述第一文件的所有页合并为一页,以得到合并为一页的第一文件;

所述记录子模块1011,还用于当所述第二文件包含多页时,记录所述第二文件中的每页的起始位置和终止位置;

所述合并子模块1012,还用于将所述第二文件的所有页合并为一页,以得到合并为一页的第二文件;

序列化子模块1013,用于在所述合并为一页的第一文件中,以每个预设单位的内容作为一个元素将所述合并为一页的第一文件进行序列化,以得到第一元素序列;

所述序列化子模块1013,还用于在所述合并为一页的第二文件中,以每个所述预设单位的内容作为一个元素将所述合并为一页的第二文件进行序列化,以得到第二元素序列;

对比子模块1014,用于通过将所述第一元素序列与所述第二元素序列进行对比,获取所述最长公共子序列。

可选的,图7是根据本公开一示例性实施例示出的一种插入模块的框图,如图7所示,该插入模块1020,可以包括:

元素识别子模块1021,用于根据所述最长公共子序列,确定所述第一文件中的共通元素和删除元素,以及所述第二文件中的共通元素和添加元素,所述删除元素为所述第一文件中除所述共通元素之外的其他元素,所述添加元素为所述第二文件中除所述共通元素之外的其他元素;

索引对齐子模块1022,用于通过将所述第一文件中的共通元素与所述第二文件中的共通元素建立索引对应关系,将所述第一文件中的共通元素与所述第二文件中的共通元素进行索引对齐;

标记插入子模块1023,用于在所述第一文件中每页的起始位置和所述第二文件中每页的起始位置插入页边界标记,或者在所述第一文件中每页的终止位置和所述第二文件中每页的终止位置插入页边界标记,每个所述页边界标记占用一个元素的长度。

可选地,该更新模块1030,用于:

当所述第一文件中的任一共通元素与所述第二文件中的对应共通元素的索引不同时,通过插入空白元素的方式将所述任一共通元素的索引与所述对应共通元素的索引调整为相同,将所述第一文件中的每个共通元素与所述第二文件中对应的共通元素进行位置对齐。

可选地,可选的,图8是根据本公开一示例性实施例示出的一种更新模块的框图,如图8所示,该更新模块1030,包括:

索引对比子模块1031,用于确定所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引是否相同;

当所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引相同时,取i=i+1后由所述索引对比子模块1031重新执行所述确定所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引是否相同的步骤;

插入子模块1032,用于当所述第一文件的第i个共通元素的索引小于所述第二文件的第i个共通元素的索引时,在所述第一文件的第i个共通元素前插入n个空白元素,并将所述第一文件的第i个共通元素以及所述第一文件的第i个共通元素之后的元素的索引增加n;

所述插入子模块1032,还用于当所述第一文件的第i个共通元素的索引大于所述第二文件的第i个共通元素的索引时,在所述第二文件的第i个共通元素前插入n个空白元素,并将所述第二文件的第i个共通元素以及所述第二文件的第i个共通元素之后的元素的索引增加n,所述n为所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引的差值的绝对值;

取i=i+1后由所述索引对比子模块1031重新执行所述确定所述第一文件的第i个共通元素的索引与所述第二文件的第i个共通元素的索引是否相同的步骤,直至将所述第一文件中的每个共通元素与所述第二文件中对应的共通元素进行位置对齐。

通过上述技术方案,提供了一种页边界的处理机制,能够在文件内容对比的过程中插入页边界标记,并将第一文件和第二文件的对应的共通元素进行位置对齐,从而使得后续在进行合并展示时,第一文件和第二文件中的相关内容在位置上是对齐的,并且能够识别出内容所属的页,因此能够解决在采用合并展示对比结果时的排版困难的问题。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图9是根据一示例性实施例示出的一种电子设备的框图。如图9所示,该电子设备900可以包括:处理器901,存储器902。该电子设备900还可以包括多媒体组件903,输入/输出(i/o)接口904,以及通信组件905中的一者或多者。

其中,处理器901用于控制该电子设备900的整体操作,以完成上述的页边界处理方法中的全部或部分步骤。存储器902用于存储各种类型的数据以支持在该电子设备900的操作,这些数据例如可以包括用于在该电子设备900上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器902可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(staticrandomaccessmemory,简称sram),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,简称eeprom),可擦除可编程只读存储器(erasableprogrammableread-onlymemory,简称eprom),可编程只读存储器(programmableread-onlymemory,简称prom),只读存储器(read-onlymemory,简称rom),磁存储器,快闪存储器,磁盘或光盘。多媒体组件903可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器902或通过通信组件905发送。音频组件还包括至少一个扬声器,用于输出音频信号。i/o接口904为处理器901和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件905用于该电子设备900与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(nearfieldcommunication,简称nfc),2g、3g、4g、nb-iot、emtc、或其他5g等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件907可以包括:wi-fi模块,蓝牙模块,nfc模块等等。

在一示例性实施例中,电子设备900可以被一个或多个应用专用集成电路(applicationspecificintegratedcircuit,简称asic)、数字信号处理器(digitalsignalprocessor,简称dsp)、数字信号处理设备(digitalsignalprocessingdevice,简称dspd)、可编程逻辑器件(programmablelogicdevice,简称pld)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的页边界处理方法。

在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的页边界处理方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器902,上述程序指令可由电子设备900的处理器901执行以完成上述的页边界处理方法。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。

此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1