发明内容
本发明的主要目的在于提供一种字符串比对方法和装置,以解决现有技术字符串比对结果不准确的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种字符串比对方法。
该字符串比对方法包括:确定多个待比对的字符串;分别拆分多个待比对的字符串,得到分别与多个待比对的字符串对应的拆分后的字符串;按照预设的映射规则将拆分后的字符串分别赋值到与多个待比对的字符串对应的目标对象中,得到与多个待比对的字符串对应的多个目标对象;分别将多个目标对象序列化为字符串,得到多个序列后的字符串;比对多个序列化后的字符串。
进一步地,比对多个序列化后的字符串包括:将多个序列化的字符串进行哈希运算,得到多个待比对的哈希值;比对多个待比对的哈希值。
进一步地,分别拆分多个待比对的字符串,得到分别与多个待比对的字符串对应的拆分后的字符串包括:确定字符串拆分规则,其中,字符串拆分规则用于指示对多个待比对的字符串进行拆分;将多个待比对的字符串按照字符串拆分规则进行拆分,得到分别与多个待比对的字符串对应的拆分后的字符串。
进一步地,按照预设的映射规则将拆分后的字符串分别赋值到与多个待比对的字符串对应的目标对象中,得到与多个待比对的字符串对应的多个目标对象包括:将拆分后的字符串转化为键值对;通过键值对分别对与多个待比对的字符串对应的目标对象执行赋值操作,其中,目标对象的属性为键值对中的键,目标对象的属性值为键值对中的值。
进一步地,在按照预设的映射规则将拆分后的字符串分别赋值到与多个待比对的字符串对应的目标对象中之后,该字符串比对方法还包括:分别检测与多个待比对的字符串对应的目标对象的属性中是否存在无效的属性;如果检测到与多个待比对的字符串对应的目标对象的属性中存在无效的属性,删除与多个待比对的字符串对应的目标对象的属性中的无效的属性和无效的属性对应的属性值。
为了实现上述目的,根据本发明的另一方面,提供了一种字符串比对装置。
该字符串比对装置包括:第一确定模块,用于确定多个待比对的字符串;拆分模块,用于分别拆分多个待比对的字符串,得到分别与多个待比对的字符串对应的拆分后的字符串;赋值模块,用于按照预设的映射规则将拆分后的字符串分别赋值到与多个待比对的字符串对应的目标对象中,得到与多个待比对的字符串对应的多个目标对象;序列模块,用于分别将多个目标对象序列化为字符串,得到多个序列后的字符串;比对模块,用于比对多个序列化后的字符串。
进一步地,比对模块包括:哈希模块,用于将多个序列化的字符串进行哈希运算,得到多个待比对的哈希值;第一比对子模块,用于比对多个待比对的哈希值。
进一步地,拆分模块包括:第二确定模块,用于确定字符串拆分规则,其中,字符串拆分规则用于指示对多个待比对的字符串进行拆分;第一拆分子模块,用于将多个待比对的字符串按照字符串拆分规则进行拆分,得到分别与多个待比对的字符串对应的拆分后的字符串。
进一步地,赋值模块包括:转化模块,用于将拆分后的字符串转化为键值对;第一赋值子模块,用于通过键值对分别对与多个待比对的字符串对应的目标对象执行赋值操作,其中,目标对象的属性为键值对中的键,目标对象的属性值为键值对中的值。
进一步地,该字符串比对装置还包括:检测模块,用于分别检测与多个待比对的字符串对应的目标对象的属性中是否存在无效的属性;删除模块,用于当检测到与多个待比对的字符串对应的目标对象的属性中存在无效的属性时,删除与多个待比对的字符串对应的目标对象的属性中的无效的属性和无效的属性对应的属性值。
通过本发明,采用确定多个待比对的字符串;分别拆分多个待比对的字符串,得到分别与多个待比对的字符串对应的拆分后的字符串;按照预设的映射规则将拆分后 的字符串分别赋值到与多个待比对的字符串对应的目标对象中,得到与多个待比对的字符串对应的多个目标对象;分别将多个目标对象序列化为字符串,得到多个序列后的字符串;比对多个序列化后的字符串,解决了现有技术字符串比对结果不准确的问题。该发明按照预设的映射规则将拆分后的字符串对象化,并将得到的对象序列化,得到序列后的字符串,通过对序列后的字符串进行哈希计算,通过比对哈希值来比对字符串。该发明能够确保当字符串具有相同数据信息时,忽略顺序和无效信息的差异,得到相同的哈希值,进而达到了提高字符串比对的准确率的效果。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明旨在提供一种字符串比对方法和装置。
图1是根据本发明实施例的字符串比对方法的流程图。如图1所示,该字符串比 对方法包括如下的步骤S101至步骤S105:
步骤S101,确定多个待比对的字符串。
该实施例的字符串的对比方法可以适用于两个字符串的比对,也可以适用于多个字符串的比对。字符串是由多个字符组成的,组成字符串的字符个数根据具体需求而定。实际中进行比对的字符串中的字符个数通常很多,比如,表征学生学号与姓名的字符串为“001=wangxiaoming&002=lihong&003=lili&004=zhaohong&005=liuxiaoling”。该实施例的字符串比对方法中的待比对的字符串可以是任意一个字符串。
步骤S102,分别拆分多个待比对的字符串,得到分别与多个待比对的字符串对应的拆分后的字符串。
优选地,该实施例的字符串比对方法中分别拆分多个待比对的字符串,得到分别与多个待比对的字符串对应的拆分后的字符串包括:确定字符串拆分规则,其中,字符串拆分规则用于指示对多个待比对的字符串进行拆分;将多个待比对的字符串按照字符串拆分规则进行拆分,得到分别与多个待比对的字符串对应的拆分后的字符串。该实施例中的字符串拆分规则为按照特定的分隔符(比如“&”,“=”等)进行拆分。次字符串拆分规则只是该实施例的一种优选方式,该字符串拆分规则还可以为按照字符串等长原则进行拆分。
优选地,该实施例字符串比对方法中的字符串拆分规则为首先按照字符“&”进行第一次拆分,然后将经过第一次拆分后的字符串按照字符“=”进行第二次拆分。比如,对于表征学生学号与姓名的字符串“001=wangxiaoming&002=lihong&003=lili&004=zhaohong&005=liuxiaoling”,按照字符“&”进行拆分,分别得到字符串“001=wangxiaoming”,“002=lihong”,“003=lili”,“004=zhaohong”以及“005=liuxiaoling”;然后再按照字符“=”拆分,分别得到字符串“001”,“wangxiaoming”,“002”,“lihong”,“003”,“lili”,“004”,“zhaohong”,“005”,“liuxiaoling”。
该实施例的字符串比对方法将待比对的字符串按照特定拆分规则自动拆分成多个字符个数较少的字符串,有利于进行字符串的比对,进而也提高了字符串比对结果的准确性。
步骤S103,按照预设的映射规则将拆分后的字符串分别赋值到与多个待比对的字符串对应的目标对象中,得到与多个待比对的字符串对应的多个目标对象。
优选地,该实施例的按照预设的映射规则将拆分后的字符串分别赋值到与多个待比对的字符串对应的目标对象中,得到与多个待比对的字符串对应的多个目标对象包括:将拆分后的字符串转化为键值对;通过键值对分别对与多个待比对的字符串对应 的目标对象执行赋值操作,其中,目标对象的属性为键值对中的键,目标对象的属性值为键值对中的值。
该实施例的字符串比对方法中的映射规则优选为:将待比对的字符串按照字符串拆分规则进行拆分,即首先按照字符“&”进行第一次拆分,然后将经过第一次拆分后的字符串按照字符“=”进行第二次拆分,字符“=”左边的字符串作为该对象的属性,字符“=”右边的字符串作为该对象的属性的值。比如,对于表征学生学号与姓名的字符串“001=wangxiaoming&002=lihong&003=lili&004=zhaohong&005=liuxiaoling”,按照字符“&”进行拆分,分别得到字符串“001=wangxiaoming”,“002=lihong”,“003=lili”,“004=zhaohong”以及“005=liuxiaoling”;然后再按照字符“=”拆分,分别得到字符串“001”,“wangxiaoming”,“002”,“lihong”,“003”,“lili”,“004”,“zhaohong”,“005”,“liuxiaoling”。按照该实施例中的映射规则,“001”,“wangxiaoming”为一个键值对,其中,“001”为键,是该对象的属性;“wangxiaoming”为值,是该对象的属性的值。
在按照预设的映射规则将拆分后的字符串分别赋值到与多个待比对的字符串对应的目标对象中之后,该实施例的字符串比对方法还包括:分别检测与多个待比对的字符串对应的目标对象的属性中是否存在无效的属性;如果检测到与多个待比对的字符串对应的目标对象的属性中存在无效的属性,删除与多个待比对的字符串对应的目标对象的属性中的无效的属性和无效的属性对应的属性值。优选地,该实施例的字符串比对方法在映射过程中,可以设置一定的规则,过滤掉对象的无效的属性及该无效的属性的值,确保对象中只保留有用的属性和属性值。可选的,该实施例中的过滤对象的无效的属性及无效的属性的值时可以仅保留长度为限定值(比如32个字节)的属性值,超长的属性值会被自动截断。
比如,对于表征学生学号与姓名的字符串中包含有无效的字符串,即“001=wangxiaoming&002=lihong&003=lili&004=zhaohong&005=liuxiaoling&000=000”,其中“000=000”为无效的字符串。对于上述包含有“000=000”的字符串按照该实施例中的拆分规则拆分为“001”,“wangxiaoming”,“002”,“lihong”,“003”,“lili”,“004”,“zhaohong”,“005”,“liuxiaoling”,“000”,“000”。按照该实施例的映射规则会将无效的属性“000”及无效属性的值“000”过滤掉。
该实施例的字符串的比对方法将拆分后的字符串赋值到特定的目标对象中有利于进行字符创的比对,同时该实施例的字符串比对方法将对象中无效的属性及无效的属性的值进行过滤,保证了字符串比对结果的准确性。
步骤S104,分别将多个目标对象序列化为字符串,得到多个序列后的字符串。
在按照预设的映射规则将拆分后的字符串分别赋值到与多个待比对的字符串对应的目标对象中之后,该实施例的字符串的比对方法将映射后的对象序列化为字符串,该序列化的过程可以采用常用的可扩展标记语言(eXtensible Markup Language,简称为XML)或者JavaScript对象表示法(JavaScript Object Notation,简称为JSON)方法。该实施例的字符串比对方法将对象序列化为字符串目的是为了保存内存中的各种对象的状态,便于快速读取内存中保存的对象的状态。
步骤S105,比对多个序列化后的字符串。
将映射后的对象序列化为字符串之后,将序列化的字符串进行比对,优选地,该实施例的字符串比对方法中比对多个序列化后的字符串包括:将多个序列化的字符串进行哈希运算,得到多个待比对的哈希值;比对多个待比对的哈希值。该实施例通过对字符串进行哈希运算得到哈希值,然后通过比对哈希值来实现字符串的比对,这是因为哈希运算可以将包含字符个数很多的字符串转化为较短的固定长度的字符串,通过比对较短的固定长度的字符串可以提高字符串比对的效率,同时也能降低字符串比对过程中的失误率,进而保证了字符串比对结果的准确性。
该实施例的字符串比对方法采用确定多个待比对的字符串;分别拆分多个待比对的字符串,得到分别与多个待比对的字符串对应的拆分后的字符串;按照预设的映射规则将拆分后的字符串分别赋值到与多个待比对的字符串对应的目标对象中,得到与多个待比对的字符串对应的多个目标对象;分别将多个目标对象序列化为字符串,得到多个序列后的字符串;比对多个序列化后的字符串,解决了现有技术字符串比对结果不准确的问题,达到了提高字符串比对的准确率的效果。
从以上的描述中,可以看出,本发明实施例的字符串比对方法通过采用将待比对的字符串按照拆分规则进行拆分,然后按照预设的映射规则将拆分后的字符串对象化,并将得到的对象序列化,得到序列后的字符串,通过对序列后的字符串进行哈希计算,进行哈希值比对,从而完成字符串的比对,该发明的实施例解决了现有技术字符串比对结果不准确的问题,同时该发明能够确保当字符串具有相同数据信息时,忽略顺序和无效信息的差异,得到相同的哈希值,进而达到了提高字符串比对结果准确率的效果。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例还提供了一种字符串比对装置。需要说明的是,该字符串比对装置可以用于执行本发明实施例的字符串比对方法。
图2是根据本发明实施例的字符串比对装置的示意图。如图2所示,该字符串比对装置包括:第一确定模块10,拆分模块20,赋值模块30,序列模块40和比对模块50。
第一确定模块10,用于确定多个待比对的字符串。
拆分模块20,用于分别拆分多个待比对的字符串,得到分别与多个待比对的字符串对应的拆分后的字符串。
具体地,拆分模块20包括:第二确定模块,用于确定字符串拆分规则,其中,字符串拆分规则用于指示对多个待比对的字符串进行拆分;第一拆分子模块,用于将多个待比对的字符串按照字符串拆分规则进行拆分,得到分别与多个待比对的字符串对应的拆分后的字符串。
赋值模块30,用于按照预设的映射规则将拆分后的字符串分别赋值到与多个待比对的字符串对应的目标对象中,得到与多个待比对的字符串对应的多个目标对象。
具体地,赋值模块30包括:转化模块,用于将拆分后的字符串转化为键值对;第一赋值子模块,用于通过键值对分别对与多个待比对的字符串对应的目标对象执行赋值操作,其中,目标对象的属性为键值对中的键,目标对象的属性值为键值对中的值。
序列模块40,用于分别将多个目标对象序列化为字符串,得到多个序列后的字符串。
比对模块50,用于比对多个序列化后的字符串。
具体地,比对模块50包括:哈希模块,用于将多个序列化的字符串进行哈希运算,得到多个待比对的哈希值;第一比对子模块,用于比对多个待比对的哈希值。
优选地,该实施例的字符串比对装置还包括:检测模块,用于分别检测与多个待比对的字符串对应的目标对象的属性中是否存在无效的属性;删除模块,用于当检测到与多个待比对的字符串对应的目标对象的属性中存在无效的属性时,删除与多个待比对的字符串对应的目标对象的属性中的无效的属性和无效的属性对应的属性值。
该实施例的字符串比对装置包括第一确定模块10,拆分模块20,赋值模块30,序列模块40和比对模块50。通过该实施例的字符串比对装置解决了现有技术字符串比对结果不准确的问题,达到了提高字符串比对结果准确率的效果。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以 将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。