一种弹幕数据的校验方法、装置及终端与流程

文档序号:16889783发布日期:2019-02-15 22:57阅读:163来源:国知局
一种弹幕数据的校验方法、装置及终端与流程

本发明实施例涉及弹幕技术领域,尤其涉及一种弹幕数据的校验方法、装置及终端。



背景技术:

随着智能终端的快速发展,各种应用软件被开发应用于智能终端中。一些应用软件比如直播软件、视频播放软件中往往具有弹幕接收、解析和推送等弹幕功能。在开发这些应用软件的过程中,需要对服务器下发的弹幕数据进行相关测试,以确定弹幕功能是否正常运行。

目前,基于android操作系统的应用软件开发中,服务器在根据预设弹幕协议构建完成弹幕数据之后,往往直接将构建的弹幕数据下发至客户端,并且客户端在接收到弹幕数据时,也是直接对弹幕数据进行解析和分发处理。

可见,在现有的弹幕数据下发过程以及接收过程中,服务器和客户端均未对弹幕数据进行任何校验,从而在弹幕数据存在异常情况时,便会导致弹幕测试流程出现错误,甚至导致客户端出现系统崩溃等问题,严重影响了弹幕测试效率。



技术实现要素:

本发明实施例提供了一种弹幕数据的校验方法、装置及终端,以对弹幕数据进行完整性校验,从而保证弹幕数据可以被正常解析,避免导致客户端出现系统崩溃等问题。

第一方面,本发明实施例提供了一种弹幕数据的校验方法,包括:

获取预设字符串结构的目标弹幕数据;

调用存储所述目标弹幕数据的弹幕数据对象中的字符验证函数,对所述目标弹幕数据中的首位字符和末位字符进行字符验证;

若字符验证成功,则调用所述弹幕数据对象中的字符串转换函数,将所述目标弹幕数据转换为目标字符数组;

将所述目标字符数组中每预设数量的相邻的字符元素进行字符拼接,确定各拼接字符串对象,并分别调用各所述拼接字符串对象中的标识符查找函数,确定所述目标弹幕数据中预设标识符的数量,其中所述预设数量根据所述预设标识符包含的预设字符的数量预先确定;

若所述预设标识符的数量满足预设校验条件,则确定所述目标弹幕数据校验成功。

第二方面,本发明实施例还提供了一种弹幕数据的校验装置,包括:

目标弹幕数据获取模块,用于获取预设字符串结构的目标弹幕数据;

字符验证模块,用于调用存储所述目标弹幕数据的弹幕数据对象中的字符验证函数,对所述目标弹幕数据中的首位字符和末位字符进行字符验证;

目标字符数组确定模块,用于若字符验证成功,则调用所述弹幕数据对象中的字符串转换函数,将所述目标弹幕数据转换为目标字符数组;

预设标识符数量确定模块,用于将所述目标字符数组中每预设数量的相邻的字符元素进行字符拼接,确定各拼接字符串对象,并分别调用各所述拼接字符串对象中的标识符查找函数,确定所述目标弹幕数据中预设标识符的数量,其中所述预设数量根据所述预设标识符包含的预设字符的数量预先确定;

预设标识符数量校验模块,用于若所述预设标识符的数量满足预设校验条件,则确定所述目标弹幕数据校验成功。

第三方面,本发明实施例还提供了一种终端,所述终端包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的弹幕数据的校验方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的弹幕数据的校验方法。

本发明实施例通过将预设字符串结构的目标弹幕数据存储在弹幕数据对象后,调用弹幕数据对象中的字符验证函数,对目标弹幕数据中的首位字符和末位字符进行字符验证;若字符验证成功,则调用弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组;并将目标字符数组中每预设数量的相邻的字符元素进行字符拼接,确定各拼接字符串对象;通过分别调用各拼接字符串对象中的标识符查找函数,确定目标弹幕数据中预设标识符的数量;当预设标识符的数量满足预设校验条件时,确定目标弹幕数据校验成功。通过采用上述技术方案,对预设字符串结构的目标弹幕数据进行了完整性校验,从而在目标弹幕数据校验成功后,可以对目标弹幕数据进行正常解析,进而避免了因弹幕数据异常而导致客户端出现系统崩溃等问题,提高了弹幕测试效率。

附图说明

图1是本发明实施例一提供的一种弹幕数据的校验方法的流程图;

图2是本发明实施例二提供的一种弹幕数据的校验方法的流程图;

图3是本发明实施例三提供的一种弹幕数据的校验装置的结构示意图;

图4是本发明实施例四提供的一种终端的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种弹幕数据的校验方法的流程图,本实施例可适用于对预设字符串结构的弹幕数据进行完整性校验的情况,尤其可以用于弹幕服务器中根据预设弹幕协议生成弹幕数据后,对生成的弹幕数据进行校验的应用场景中,同时也可以用于android客户端中对弹幕服务器下发的弹幕数据进行校验的应用场景中。该方法可以由弹幕数据的校验装置来执行,该装置可以由软件和/或硬件的方式来实现,可集成于弹幕服务器或者搭载了android系统的具有弹幕功能的终端中,比如智能手机、平板电脑、智能电视或者笔记本电脑等智能终端。该方法具体包括以下步骤:

s110、获取预设字符串结构的目标弹幕数据。

其中,弹幕数据可以是指将弹幕参数信息按照预设弹幕协议进行封装后获得的字符串string类型的数据。预设弹幕协议可以根据实际情况和用户需求进行预先设置,用于规定弹幕数据的传输数据结构,以使弹幕服务器与客户端之间可以进行数据传输。预设弹幕协议可以规定一种或多种数据结构。预设字符串结构可以是预设弹幕协议中规定的一种数据结构。预设字符串结构与预设弹幕协议相对应。目标弹幕数据可以是指待校验的预设字符串结构的弹幕数据。

可选地,预设字符串结构为:以预设开始符作为首位字符,以预设分隔符划分各键值对信息,以预设连接符连接键值对信息中的键信息和值信息,以预设结束符作为末位字符,其中,值信息不包含预设连接符。

其中,预设开始符、预设分隔符、预设连接符和预设结束符均是预先根据实际情况设置的字符,并且预设开始符、预设分隔符、预设连接符和预设结束符是互不相同的字符。本实施例中的预设分隔符或者预设连接符包含的预设字符的数量可以为一个,也可以为多个。其中,预设字符可以是预先定义的一种数字、字母或特殊符号等。示例性地,预设开始符可以是但不限于为左花括号“{”、左圆括号“(”和左中括号“[”。为了增加与键值对信息内容之间的区分度,优选为左花括号“{”。预设分隔符可以是但不限于斜杠“\”和“/”。预设连接符可以是但不限于“-”、“@”、“,”“==”和“@=”,预设结束符可以是但不限于右花括号“}”、右圆括号“)”和右中括号“]”。优选为右花括号“}”。

具体地,预设字符串结构的目标弹幕数据中的首位字符与末位字符之间包括多个键值对信息,每两个键值对信息之间以预设分隔符进行划分,每个键值对信息中的键信息和值信息以预设连接符进行连接,并且每个值信息中均不包含预设连接符。本实施例中的键值对信息可以包含英文字符和/或中文字符。本实施例对预设字符串结构中对键值对信息的数量不做限定。示例性地,预设字符串结构的目标弹幕数据可以为:

{type@=uenter/rid@=104838/uid@=20080138/wgei@=0/}

其中,目标弹幕数据以“{”为预设开始符,以“/”为预设分隔符,以“@=”为预设连接符,以“}”为预设结束符,包括四个键值对信息。第一键值对信息中的键信息为“type”,对应的值信息为“uenter”;第二键值对信息中的键信息为“rid”,对应的值信息为“104838”;第三键值对信息中的键信息为“uid”,对应的值信息为“20080138”;第四键值对信息中的键信息为“wgei”,对应的值信息为“0”。

可选地,s110包括:获取待校验弹幕数据以及待校验弹幕数据对应的待校验数据标识;将待校验数据标识与预设字符串结构对应的标识集合中的数据标识进行匹配;若匹配成功,则将待校验弹幕数据确定为目标弹幕数据。

其中,待校验弹幕数据可以是将弹幕参数信息按照预设弹幕协议进行封装后获得的任一字符串结构的弹幕数据。每个待校验弹幕数据均对应一个待校验数据标识。待校验数据标识用于对待校验弹幕数据进行唯一标识,以通过待校验数据标识可以确定待校验弹幕数据的数据结构。预设字符串结构对应的标识集合可以包括:数据结构为预设字符串结构的所有弹幕数据对应的数据标识。

具体的,若预设弹幕协议规定了多种数据结构,则在生成某个弹幕数据时,可以预先检测生成的弹幕数据的数据结构是否为预设字符串结构,若是,则将该弹幕数据对应的数据标识添加至预设字符串结构对应的标识集合中,从而将生成的数据结构为预设字符串结构的弹幕数据对应的数据标识均添加至该标识集合中,以便进行后续的校验操作。在获取待校验弹幕数据对应的待校验数据标识后,可以将待校验数据标识与预设字符串结构对应的标识集合中的数据标识进行逐一匹配,若待校验数据标识与标识集合中的任一数据标识匹配成功,则表明该待校验弹幕数据的数据结构为预设字符串结构,此时可以将该待校验弹幕数据确定为目标弹幕数据,以便对目标弹幕数据进行完整性校验。若待校验数据标识与标识集合中的每个数据标识均匹配失败,则表明该待校验弹幕数据的数据结构不是预设字符串结构,此时可以获取下一待校验弹幕数据并进行标识匹配,直至获取预设字符串结构的目标弹幕数据。

s120、调用存储目标弹幕数据的弹幕数据对象中的字符验证函数,对目标弹幕数据中的首位字符和末位字符进行字符验证。

其中,弹幕数据对象是一个用于存储目标弹幕数据的对象。本实施例中的目标弹幕数据是一个string类型的数据,从而弹幕数据对象为一个string对象。字符验证函数可以是预先定义的,用于对目标弹幕数据中的首位字符和末位字符进行验证的函数。

可选地,字符验证函数通过如下步骤实现对目标弹幕数据中的首位字符和末位字符进行字符验证的功能:调用第一字符验证函数,检测目标弹幕数据中的首位字符是否为预设开始符;若首位字符为预设开始符,则调用第二字符验证函数,检测目标弹幕数据中的末位字符是否为预设结束符;若末位字符为预设结束符,则确定字符验证成功。

其中,第一字符验证函数是预先定义的,用于对目标弹幕数据中的首位字符进行校验的函数。第二字符验证函数是预先定义的,用于对目标弹幕数据中的末位字符进行校验的函数。示例性地,将弹幕数据对象标记为danmustr,若预设开始符为“{”,预设结束符为“}”,则调用第一字符验证函数可以是danmustr.startwith(“{”),以检测弹幕数据对象danmustr中的目标弹幕数据中的首位字符是否为“{”;第二字符验证函数可以为danmustr.endwith(“}”),以检测弹幕数据对象danmustr中的目标弹幕数据中的末位字符是否为“}”。

具体地,当调用第一字符验证函数后,若检测目标弹幕数据中的首位字符不是预设开始符,则表明首位字符验证失败,也就是目标弹幕数据是一条不完整的数据,即不合格数据,此时可以直接确定目标弹幕数据校验失败。若检测目标弹幕数据中的首位字符是预设开始符,则表明首位字符验证成功,此时可以调用第二字符验证函数,检测目标弹幕数据中的末位字符是否为预设结束符,若是,则表明目标弹幕数据中的首位字符和末位字符均是合法的,此时可以确定字符验证成功;若否,则表明目标弹幕数据是一条不完整的数据,此时可以直接确定目标弹幕数据校验失败。

s130、若字符验证成功,则调用弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组。

其中,字符串转换函数是预先定义的,用于将目标弹幕数据转换为一个字符数组的函数。目标字符数组中的字符顺序与目标弹幕数据中的字符顺序保持一致。示例性地,若将弹幕数据对象标记为danmustr,则弹幕数据对象中的字符串转换函数可以为:danmustr.tochararray(),从而可以将弹幕数据对象danmustr中存储的目标弹幕数据转换为一个目标字符数组。

具体地,假设弹幕数据对象danmustr中存储的目标弹幕数据为:abcd,通过调用danmustrarray[]=danmustr.tochararray(),则将弹幕数据对象danmustr的每一个下标位的对象保存在danmustrchar[]中,即danmustrchar[]中的信息为:[‘a’,‘b’,‘c’,‘d’]。

s140、将目标字符数组中每预设数量的相邻的字符元素进行字符拼接,确定各拼接字符串对象,并分别调用各拼接字符串对象中的标识符查找函数,确定目标弹幕数据中预设标识符的数量。

其中,本实施例可以设置一种预设标识符,也可以设置多种预设标识符。预设标识符可以包含一个预设字符,也可以包含多个预设字符。预设标识符可以根据预设弹幕协议规定的预设字符串结构预先确定。预设标识符可以包括但不限于预设分隔符和预设连接符。预设数量是指需要拼接的相邻的字符元素的数量,预设数量可以根据预设标识符包含的预设字符的数量确定。示例性地,若预设字符串结构中只规定了一种预设标识符,并且该预设标识符包含x个预设字符,则预设数量可以直接确定为x。若预设字符串结构中规定了多种预设标识符,则对比每种预设标识符包含的预设字符的数量,将最大的数量确定为预设数量。示例性地,若预设字符串结构中的预设标识符包括预设分隔符和预设连接符,并且预设分隔符包括n个预设字符,预设连接符包括m个预设字符,则当n≥m时,预设数量确定为n;当n<m时,预设数量确定为m。拼接字符串对象可以是指将目标字符数组中预设数量的相邻的字符元素拼接得到的字符串对象。标识符查找函数是预先定义的,用于查找拼接字符串对象存储的字符串数据中是否存在预设标识符的函数。

具体地,基于目标字符数组中字符元素的排列顺序,以1个字符元素为提取步长,对目标字符数组中相邻的字符元素按照预设数量进行提取,并对每次提取的预设数量的字符元素进行字符拼接,以便获得一个拼接后的字符串数据,并将该字符串数据存储于拼接字符串对象中。同理,可以获得目标字符数组对应的所有的拼接字符串对象。通过调用每个拼接字符串对象中的标识符查找函数,确定每个拼接字符串对象存储的字符串数据中是否存在预设标识符,将存在预设标识符的拼接字符串对象的个数确定为目标弹幕数据中预设标识符的数量。本实施例通过将目标字符数组中的相邻字符元素进行拼接,获得目标弹幕数据中由相邻字符拼接的各个字符串片段。在预设标识符包括两个或两个以上的预设字符时,只需通过利用标识符查询函数查询每个字符串片段中是否存在预设标识符,无需将目标字符数组中的每个字符元素均与预设标识符中的每个预设字符进行匹配,从而可以快速地确定目标弹幕数据中预设标识符的数量,大大提升了校验效率。

示例性地,若目标字符数组包括4个字符元素,即为[‘a’,‘b’,‘c’,‘d’],预设数量为2时,则将目标字符数组中的第1个字符元素‘a’和第2个字符元素‘b’进行字符拼接,确定第1个拼接字符串对象“ab”;将目标字符数组中的第2个字符元素‘b’和第3个字符元素‘c’进行字符拼接,确定第2个拼接字符串对象“bc”;将目标字符数组中的第3个字符元素‘c’和第4个字符元素‘d’进行字符拼接,确定第3个拼接字符串对象“cd”,从而获得目标弹幕数据abcd对应的三个拼接字符串对象,并通过调用每个拼接字符串对象中的标识符查找函数,确定每个拼接字符串对象存储的字符串数据是否存在预设标识符,若有两个拼接字符串对象中存在预设标识符,则可以确定目标弹幕数据中预设标识符的数量为2。

s150、若预设标识符的数量满足预设校验条件,则确定目标弹幕数据校验成功。

其中,预设校验条件是指在弹幕数据完整时,预设标识符的数量需要满足的条件。示例性地,若预先获取了某个目标弹幕数据中预设标识符的准确数量为10,则预设校验条件可以为:目标弹幕数据中预设标识符的数量为10。

具体地,若预设标识符的数量满足预设检验条件,则表明目标弹幕数据是一条完整的数据,可以被正常解析,此时可以确定目标弹幕数据校验成功。若预设标识符的数量不满足预设检验条件,则表明目标弹幕数据是一条非法数据,此时确定目标弹幕数据校验失败。

需要注意的是,本实施例可以将步骤s120-s150所提供的功能进行封装为一个弹幕校验函数,从而只需将弹幕数据对象作为弹幕校验函数的输入对象,通过调用弹幕校验函数,即可实现目标弹幕数据的校验过程,使得弹幕校验更加便捷。示例性地,弹幕校验函数可以定义为:publisstaticbooleancheckdanminfo(stringdanmustr)。其中,checkdanminfo是弹幕校验函数的函数名称,danmustr是字符串string类型的弹幕数据对象,弹幕校验函数checkdanminfo的返回值是一个布尔boolean类型的对象。若目标弹幕数据校验成功,则弹幕校验函数checkdanminfo可以通过调用returntrue返回true,若目标弹幕数据校验失败,则弹幕校验函数checkdanminfo可以调用returnfalse返回false。弹幕校验函数checkdanminfo具有公有权限修饰符public和静态类型修饰符static,以便可以直接通过类调用checkdanminfo,提高了弹幕校验函数调用的便捷性。

可选地,在弹幕服务器向android客户端下发目标弹幕数据之前,可以利用本实施例所提供的弹幕数据的校验方法进行校验,并在目标弹幕数据校验成功后,再进行目标弹幕数据的下发操作,以保证弹幕服务器下发的目标弹幕数据为准确完整的数据。android客户端接收下发的目标弹幕数据后,可以利用本实施例所提供的弹幕数据的校验方法进行再次校验,并在目标弹幕数据校验成功后,再对目标弹幕数据进行解析处理,从而可以避免因弹幕数据异常而导致客户端出现系统崩溃等问题,提高了弹幕测试效率。

本实施例的技术方案,将预设字符串结构的目标弹幕数据存储在弹幕数据对象后,调用弹幕数据对象中的字符验证函数,对目标弹幕数据中的首位字符和末位字符进行字符验证;若字符验证成功,则调用弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组;并将目标字符数组中每预设数量的相邻的字符元素进行字符拼接,确定各拼接字符串对象;通过分别调用各拼接字符串对象中的标识符查找函数,确定目标弹幕数据中预设标识符的数量;当预设标识符的数量满足预设校验条件时,确定目标弹幕数据校验成功。通过采用上述技术方案,对预设字符串结构的目标弹幕数据进行了完整性校验,从而在目标弹幕数据校验成功后,可以对目标弹幕数据进行正常解析,进而避免了因弹幕数据异常而导致客户端出现系统崩溃等问题,提高了弹幕测试效率。

在上述技术方案的基础上,当预设连接符包括第一预设字符和第二预设字符,预设分隔符包括第三预设字符时,s140可以包括:将目标字符数组中每两个相邻的字符元素进行字符拼接,确定各拼接字符串对象,并分别调用各拼接字符串对象中的标识符查找函数,确定目标弹幕数据中预设分隔符数量和预设连接符数量。

具体地,当预设连接符包括两个预设字符,即第一预设字符和第二预设字符,预设分隔符包括一个预设字符,即第三预设字符时,将目标字符数组中相邻的两个字符元素进行字符拼接,以使每个拼接字符串对象中只包含目标弹幕数据中相邻的两个字符,从而根据每个拼接字符串对象可以更快速准确地确定预设连接符数量和预设分隔符数量。

在上述技术方案的基础上,s150可以包括:若预设分隔符数量与预设连接符数量相等,则确定目标弹幕数据校验成功。

其中,当预设标识符包括预设分隔符和预设连接符时,通过对预设字符串结构的分析,可以得出:若目标弹幕数组完整,则预设分隔符的数量与预设连接符的数量相等,即预设校验条件为:预设分隔符的数量等于预设连接符的数量。

具体地,若预设分隔符数量与预设连接符数量相等,则表明满足预设校验条件,此时可以确定目标弹幕数据校验成功。若预设分隔符数量与预设连接符数量不相等,则可以确定目标弹幕数据校验失败。本实施例可以通过比较预设分隔符数量与预设连接符数量的大小,确定目标弹幕数据的校验结果,使得弹幕校验更加便捷。

实施例二

图2为本发明实施例二提供的一种弹幕数据的校验方法的流程图,本实施例在上述实施例的基础上对“将目标字符数组中每两个相邻的字符元素分别进行字符拼接,确定各拼接字符串对象,并分别调用各拼接字符串对象中的标识符查找函数,确定目标弹幕数据中预设分隔符数量和预设连接符数量”进行了优化。其中与上述各实施例相同或相应的术语的解释在此不再赘述。

参见图2,本实施例提供的弹幕数据的校验方法包括以下步骤:

s210、获取预设字符串结构的目标弹幕数据。

其中,预设字符串结构为:以预设开始符作为首位字符,以预设分隔符划分各键值对信息,以预设连接符连接键值对信息中的键信息和值信息,以预设结束符作为末位字符,其中,值信息不包含预设连接符。在本实施中,预设连接符包括第一预设字符和第二预设字符,预设分隔符包括一个第三预设字符。示例性的,预设连接符可以是但不限于“@=”,即第一预设字符为“@”,第二预设字符为“=”;预设分隔符可以是但不限于“/”,即第三预设字符为“/”。

s220、调用存储目标弹幕数据的弹幕数据对象中的字符验证函数,对目标弹幕数据中的首位字符和末位字符进行字符验证。

s230、若字符验证成功,则调用弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组。

s240、将目标字符数组中的第一个字符元素作为当前字符元素,并获取当前字符元素的后一字符元素。

其中,当前字符元素是当前时刻目标字符数组中的一个字符元素。在第一次循环周期内,将目标字符数组中的第一个字符元素作为当前字符元素。后一字符元素是按照目标字符数组中的元素次序,与当前字符元素相邻的后一个字符元素。若当前字符元素为目标字符数组中的第一个字符元素,则后一字符元素为目标字符数组中的第二个字符元素。本实施例由于预设连接符包括第一预设字符和第二预设字符这两个字符,从而在每次循环周期中需要获取目标字符数组中相邻的两个字符元素,即当前字符元素和后一字符元素,以便后续确定预设连接符的数量。

s250、创建字符拼接对象,分别调用字符拼接对象中的字符添加函数,先后将当前字符元素和后一字符元素添加至字符拼接对象。

其中,字符拼接对象是实时创建的,用于将多个字符元素拼接成一个字符串的对象。字符添加函数是预先定义的,用于将字符元素添加至字符拼接对象中的函数。目标字符数组danmustrarray中的当前字符元素可以标记为danmustrarray[index],后一字符元素为danmustrarray[index+1]。

具体地,本实施例可以通过调用stringbuilderbuilder=newstringbuilder()构造函数来创建一个字符拼接对象builder。字符拼接对象builder创建后,首先以当前字符元素danmustrarray[index]作为函数输入参数,调用字符拼接对象builder中的字符添加函数builder.append(danmustrarray[index]),将当前字符元素danmustrarray[index]先添加至字符拼接对象builder中。然后,以后一字符元素danmustrarray[index+1]为函数输入参数,再次调用字符拼接对象builder中的字符添加函数builder.append(danmustrarray[index+1]),将后一字符元素danmustrarray[index+1]添加至字符拼接对象builder中的当前字符元素danmustrarray[index]的后面。

s260、调用字符拼接对象中的字符拼接函数,将字符拼接对象中添加的当前字符元素和后一字符元素拼接为字符串数据,并将字符串数据存储于拼接字符串对象中。

其中,字符拼接函数是预先定义的,用于将多个离散的字符元素拼接成一个字符串的函数。字符串数据中的字符顺序,即当前字符元素和后一字符元素的字符顺序与目标弹幕数据中的字符顺序相同。

具体地,本实施例可以通过调用字符拼接对象builder中的字符拼接函数builder.tostring(),将当前字符拼接对象builder中先后存储的当前字符元素danmustrarray[index]和后一字符元素danmustrarray[index+1]转换为一个字符串数据,并将该字符串数据存储在拼接字符串对象tmpstr中。

s270、以预设分隔符为函数输入参数,调用拼接字符串对象中的标识符查找函数,确定字符串数据是否包含预设分隔符,若是,则预设的第一全局变量进行自加操作;

其中,标识符查找函数是预先定义的,用于查找拼接字符串对象存储的字符串数据中是否包含输入参数的函数。需要注意的是,标识符查找函数只能用于确定字符串数据中是否包含输入参数,无法确定字符串数据中包含的输入参数的个数。第一全局变量用于存储包含预设分隔符的字符串数据的个数,以便计算预设分隔符的数量。第一全局变量可以定义为:privateintsplitcount1=0。其中,splitcount1是第一全局变量的名称,第一全局变量splitcount1是一个初始值为0的整型变量。第一全局变量splitcount1具有私有权限修饰符private,以保证只有第一全局变量所属的类才可以进行调用。

具体地,若拼接字符串对象存储的字符串数据中包含预设分隔符,则预设的第一全局变量进行自加操作,即第一全局变量累加1。示例性地,假设预设分隔符为“/”,则可以通过以“/”为函数输入对象,调用拼接字符串对象tmpstr中的标识符查找函数tmpstr.contains(“/”),查询拼接字符串对象tmpstr中是否包含“/”,若是,则splitcount1进行自加操作。

需要说明的是,本实施例中的预设分隔符只包括一个预设字符,然而完整准确的目标弹幕数据中不可能存在相邻的两个字符均是预设分隔符,从而无需确定由相邻两个字符组成的字符串数据中包含的预设分隔符的个数,只需确定字符串数据中是否包含预设分隔符即可。

s280、以预设连接符为函数输入参数,调用拼接字符串对象中的标识符查找函数,确定字符串数据是否包含预设连接符,若是,则预设的第二全局变量进行自加操作。

其中,第二全局变量用于存储包含预设连接符的字符串数据的个数,以便计算预设连接符的数量。第二全局变量可以定义为:privateintsplitcount2=0。其中,splitcount2是第二全局变量的名称,第二全局变量splitcount2是一个初始值为0的整型变量。第二全局变量splitcount2具有私有权限修饰符private,以保证只有第二全局变量所属的类才可以进行调用。

具体地,若拼接字符串对象存储的字符串数据中包含预设连接符,则预设的第二全局变量进行自加操作,即第二全局变量累加1。示例性地,假设预设连接符为“@=”,则可以通过以“@=”为函数输入对象,调用拼接字符串对象tmpstr中的标识符查找函数tmpstr.contains(“@=”),查询拼接字符串对象tmpstr中是否包含“@=”,若是,则splitcount2进行自加操作。

需要说明的是,本实施例中的预设连接符包括两个预设字符,从而当确定由相邻两个字符组成的字符串数据中包含预设连接符时,表明该字符串数据即为预设连接符,以便可以直接统计目标弹幕数据中预设连接符的数量。

s290、将当前字符元素的后一字符元素更新为当前字符元素,并检测当前字符元素是否为目标字符数组中的最后一个字符元素;若否,则获取当前字符元素的后一字符元素,并返回执行步骤s250,若是,则执行步骤s291。

具体地,通过将当前字符元素的后一字符元素更新为当前字符元素,以便将目标字符数组中的字符元素依次确定为当前字符元素。由于本实施例需要获取当前字符元素的后一字符元素,使得当前字符元素不能为目标字符数组中的最后一个字符元素,以避免数组越界的问题。示例性地,当前字符元素danmustrarray[index]中数组索引号index的取值范围为:0≤index≤danmustrarray.length-2,其中danmustrarray.length表示目标字符数组的长度。在将当前字符元素的后一字符元素更新为当前字符元素之后,若检测此时的当前字符元素不是目标字符数组中的最后一个字符元素,则表示循环还未结束,此时需要获取当前字符元素的后一字符元素,并通过重复执行步骤s250-s280进入下一个循环周期。若检测此时的当前字符元素为目标字符数组中的最后一个字符元素,则表示循环结束,此时第一全局变量和第二全局变量分别存储的是最终的预设分隔符和预设连接符的数量信息,并执行步骤s291,以确定目标弹幕数据中的预设分隔符和预设连接符的总数量。

需要注意的是,在每个循环周期中,均需要重新创建字符拼接对象builder,以保证字符拼接对象builder中添加的数据是本次循环周期中的当前字符元素和后一字符元素,从而避免数据污染的问题。

可选地,本实施例可以利用但不限于for循环方式,来实现对目标字符数组中的字符元素的循环遍历。需要注意的是,当利用for循环方式时,遍历的范围应为:for(intindex=0;index<danmustrarray.length-2;index++)。其中,index为目标字符数组danmustrarray中的当前字符元素的索引号,danmustrarray.length为目标字符数组danmustrarray的长度。

s291、根据第一全局变量确定预设分隔符数量,并将第二全局变量的数值确定为预设连接符数量。

其中,本实施例在判断目标字符数据中相邻的两个字符元素组成的字符串数据中是否包含预设分隔符时,除了目标字符数组中的第一个字符元素和最后一个字符元素之外的其他每个字符元素对应两个字符串数据,从而均存在两次预设分隔符的判断过程,也就是说,当其他某个字符元素为预设分隔符时,第一全局变量会存在两次自加操作。对于准确完整的目标弹幕数据而言,目标字符数组中的第一个字符元素应为预设开始字符,最后一个字符元素应为预设结束字符,即第一个字符元素和最后一个字符元素不可能为预设分隔符,从而可以将第一全局变量存储的数值除以2得到的结果确定为预设分隔符数量。本实施例在目标字符数据中某相邻的两个字符元素组成的字符串数据中包含预设连接符时,仅会对第二全局变量进行一次自加操作,从而第二全局变量存储的数值即为预设连接符数量,此时可以将第二全局变量的数值直接确定为预设连接符数量。

s292、若预设分隔符数量与预设连接符数量相等,则确定目标弹幕数据校验成功。

本实施例的技术方案,在预设连接符包括第一预设字符和第二预设字符,预设分隔符包括第三预设字符时,通过采用一个循环,并在每次循环周期中对目标字符数组中两个的相邻字符元素进行字符拼接,确定拼接字符串对象,并通过调用拼接字符串对象中的标识符查找函数,同时对预设连接符数量和预设分隔符数量进行统一计算,从而可以大大提高计算效率,从而提升弹幕数据的校验效率。

在上述技术方案的基础上,在s230中调用弹幕数据对象中的字符串转换函数之前,还包括:调用弹幕数据对象中的字符提取函数,提取目标弹幕数据中首位字符与末位字符之间的字符信息,并将提取出的字符信息确定为第一弹幕数据;相应的,s230中调用弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组,包括:调用弹幕数据对象中的字符串转换函数,将第一弹幕数据转换为目标字符数组。

其中,字符提取函数可以是预先定义的,用于提取目标弹幕数据中首位字符与末位字符之间的字符信息的函数。示例性地,通过调用弹幕数据对象danmustr中的字符提取函数danmustr.substring(1,length-1),其中length为目标弹幕数据中的字符长度,从而可以获取目标弹幕数据中首位字符与末位字符之间的字符信息,并将提取的字符信息确定为第一弹幕数据。将弹幕数据对象中存储的目标弹幕数据更新为第一弹幕数据,以便通过调用弹幕数据对象中的字符串转换函数,实现对第一弹幕数据的转换。

具体地,本实施例在字符验证成功后,表明目标弹幕数据中的首位字符为预设开始符,末位字符为预设结束符,从而只需对目标弹幕数据中的首位字符与末位字符之间的字符信息进行进一步校验。假设目标弹幕数据为:{type@=uenter/rid@=104838/},则通过调用danmustr.substring(1,26)提取的字符信息,即第一弹幕数据为:type@=uenter/rid@=104838/,以便只对目标弹幕数据中预设开始符和与预设结束符之间的弹幕数据进行校验,从而可以减少循环次数,进一步提高了计算效率,提升了弹幕数据的校验效率。

需要注意的是,在利用不包含预设开始符和预设结束符的目标字符数组确定预设连接符数量时,由于目标字符数组中的第一个字符元素和最后一个字符元素均仅存在一次预设分隔符的判断过程,从而当第一个字符元素或者最后一个字符元素为预设分隔符时,第一全局变量仅存在一次自加操作。对于准确完整的第一弹幕数据而言,由于第一弹幕数据转换的目标字符数组中的第一个字符元素不可能是预设分隔符,而最后一个字符元素为预设分隔符,从而在循环结束后,可以将第一全局变量的数值加1后再除以2得到的结果确定为预设分隔符数量。

实施例三

图3为本发明实施例三提供的一种弹幕数据的校验装置的结构示意图,本实施例可适用于对预设字符串结构的弹幕数据进行完整性校验的情况,该装置具体可以包括:目标弹幕数据获取模块310、字符验证模块320、目标字符数组确定模块330、预设标识符数量确定模块340和预设标识符数量校验模块350。

其中,目标弹幕数据获取模块310,用于获取预设字符串结构的目标弹幕数据;字符验证模块320,用于调用存储目标弹幕数据的弹幕数据对象中的字符验证函数,对目标弹幕数据中的首位字符和末位字符进行字符验证;目标字符数组确定模块330,用于若字符验证成功,则调用弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组;预设标识符数量确定模块340,用于将目标字符数组中每预设数量的相邻的字符元素进行字符拼接,确定各拼接字符串对象,并分别调用各拼接字符串对象中的标识符查找函数,确定目标弹幕数据中预设标识符的数量,其中预设数量根据预设标识符包含的预设字符的数量预先确定;预设标识符数量校验模块350,用于若预设标识符的数量满足预设校验条件,则确定目标弹幕数据校验成功。

本发明实施例的技术方案,通过将预设字符串结构的目标弹幕数据存储在弹幕数据对象后,调用弹幕数据对象中的字符验证函数,对目标弹幕数据中的首位字符和末位字符进行字符验证;若字符验证成功,则调用弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组;并将目标字符数组中每预设数量的相邻的字符元素进行字符拼接,确定各拼接字符串对象;通过分别调用各拼接字符串对象中的标识符查找函数,确定目标弹幕数据中预设标识符的数量;当预设标识符的数量满足预设校验条件时,确定目标弹幕数据校验成功。通过采用上述技术方案,对预设字符串结构的目标弹幕数据进行了完整性校验,从而在目标弹幕数据校验成功后,可以对目标弹幕数据进行正常解析,进而避免了因弹幕数据异常而导致客户端出现系统崩溃等问题,提高了弹幕测试效率。

可选地,预设字符串结构为:以预设开始符作为首位字符,以预设分隔符划分各键值对信息,以预设连接符连接键值对信息中的键信息和值信息,以预设结束符作为末位字符,其中,值信息不包含预设连接符。

可选地,目标弹幕数据获取模块310,具体用于:

获取待校验弹幕数据以及待校验弹幕数据对应的待校验数据标识;

将待校验数据标识与预设字符串结构对应的标识集合中的数据标识进行匹配;

若匹配成功,则将待校验弹幕数据确定为目标弹幕数据。

可选地,字符验证模块320包括字符验证函数执行单元,用于:

通过如下步骤实现对目标弹幕数据中的首位字符和末位字符进行字符验证的功能:

调用第一字符验证函数,检测目标弹幕数据中的首位字符是否为预设开始符;

若首位字符为预设开始符,则调用第二字符验证函数,检测目标弹幕数据中的末位字符是否为预设结束符;

若末位字符为预设结束符,则确定字符验证成功。

可选地,预设连接符包括第一预设字符和第二预设字符;预设分隔符包括第三预设字符;相应地,预设标识符数量确定模块340,包括:

预设标识符数量确定单元,用于将目标字符数组中每两个相邻的字符元素进行字符拼接,确定各拼接字符串对象,并分别调用各拼接字符串对象中的标识符查找函数,确定目标弹幕数据中预设分隔符数量和预设连接符数量。

可选的,预设标识符数量校验模块350,具体用于:

若预设分隔符数量与预设连接符数量相等,则确定目标弹幕数据校验成功。

可选的,预设标识符数量确定单元,具体用于:

将目标字符数组中的第一个字符元素作为当前字符元素,并获取当前字符元素的后一字符元素;

创建字符拼接对象,分别调用字符拼接对象中的字符添加函数,先后将当前字符元素和后一字符元素添加至字符拼接对象;

调用字符拼接对象中的字符拼接函数,将字符拼接对象中添加的当前字符元素和后一字符元素拼接为字符串数据,并将字符串数据存储于拼接字符串对象中;

以预设分隔符为函数输入参数,调用拼接字符串对象中的标识符查找函数,确定字符串数据是否包含预设分隔符,若是,则预设的第一全局变量进行自加操作;

以预设连接符为函数输入参数,调用拼接字符串对象中的标识符查找函数,确定字符串数据是否包含预设连接符,若是,则预设的第二全局变量进行自加操作;

将当前字符元素的后一字符元素更新为当前字符元素,并获取当前字符元素的后一字符元素,返回执行创建字符拼接对象的操作,直至当前字符元素为目标字符数组中的最后一个字符元素;

根据第一全局变量确定预设分隔符数量,并将第二全局变量的数值确定为预设连接符数量。

可选地,该装置还包括:

字符信息提取模块,用于在调用弹幕数据对象中的字符串转换函数之前,调用弹幕数据对象中的字符提取函数,提取目标弹幕数据中首位字符与末位字符之间的字符信息,并将提取出的字符信息确定为第一弹幕数据;

相应的,目标字符数组确定模块330,还用于:调用弹幕数据对象中的字符串转换函数,将第一弹幕数据转换为目标字符数组。

本发明实施例所提供的弹幕数据的校验装置可执行本发明任意实施例所提供的弹幕数据的校验方法,具备执行弹幕数据的校验方法相应的功能模块和有益效果。

值得注意的是,上述弹幕数据的校验装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

实施例四

图4是本发明实施例四提供的一种终端的结构示意图。参见图4,该终端包括:

一个或多个处理器410;

存储器420,用于存储一个或多个程序;

当一个或多个程序被一个或多个处理器410执行,使得一个或多个处理器410实现如上述实施例中任一实施例提出的弹幕数据的校验方法,该方法包括:

获取预设字符串结构的目标弹幕数据;

调用存储目标弹幕数据的弹幕数据对象中的字符验证函数,对目标弹幕数据中的首位字符和末位字符进行字符验证;

若字符验证成功,则调用弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组;

将目标字符数组中每预设数量的相邻的字符元素进行字符拼接,确定各拼接字符串对象,并分别调用各拼接字符串对象中的标识符查找函数,确定目标弹幕数据中预设标识符的数量,其中预设数量根据预设标识符包含的预设字符的数量预先确定;

若预设标识符的数量满足预设校验条件,则确定目标弹幕数据校验成功。

图4中以一个处理器410为例;终端中的处理器410和存储器420可以通过总线或其他方式连接,图4中以通过总线连接为例。

存储器420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的弹幕数据的校验方法对应的程序指令/模块(例如,弹幕数据的校验装置中的目标弹幕数据获取模块310、字符验证模块320、目标字符数组确定模块330、预设标识符数量确定模块340和预设标识符数量校验模块350)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行终端的各种功能应用以及数据处理,即实现上述的弹幕数据的校验方法。

存储器420主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本实施例提出的终端与上述实施例提出的弹幕数据的校验方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行弹幕数据的校验方法相同的有益效果。

实施例五

本实施例五提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的弹幕数据的校验方法,该方法包括:

获取预设字符串结构的目标弹幕数据;

调用存储目标弹幕数据的弹幕数据对象中的字符验证函数,对目标弹幕数据中的首位字符和末位字符进行字符验证;

若字符验证成功,则调用弹幕数据对象中的字符串转换函数,将目标弹幕数据转换为目标字符数组;

将目标字符数组中每预设数量的相邻的字符元素进行字符拼接,确定各拼接字符串对象,并分别调用各拼接字符串对象中的标识符查找函数,确定目标弹幕数据中预设标识符的数量,其中预设数量根据预设标识符包含的预设字符的数量预先确定;

若预设标识符的数量满足预设校验条件,则确定目标弹幕数据校验成功。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所提供的弹幕数据的校验方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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