CN108989902A - 一种弹幕消息的处理方法、装置、终端和存储介质 - Google Patents

一种弹幕消息的处理方法、装置、终端和存储介质 Download PDF

Info

Publication number
CN108989902A
CN108989902A CN201810719846.9A CN201810719846A CN108989902A CN 108989902 A CN108989902 A CN 108989902A CN 201810719846 A CN201810719846 A CN 201810719846A CN 108989902 A CN108989902 A CN 108989902A
Authority
CN
China
Prior art keywords
key
character
value
information
symbol
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.)
Granted
Application number
CN201810719846.9A
Other languages
English (en)
Other versions
CN108989902B (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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810719846.9A priority Critical patent/CN108989902B/zh
Publication of CN108989902A publication Critical patent/CN108989902A/zh
Application granted granted Critical
Publication of CN108989902B publication Critical patent/CN108989902B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/488Data services, e.g. news ticker
    • H04N21/4884Data services, e.g. news ticker for displaying subtitles

Abstract

本发明实施例公开了一种弹幕消息的处理方法、装置、终端和存储介质。该方法包括:依次遍历弹幕消息中的每个字符;根据所述弹幕消息中的第一分隔符和第二分隔符确定所述弹幕消息中的键信息和值信息,并分别将所述键信息和所述值信息存储于预设键字符串和预设值字符串中,其中,所述第二分隔符包括第二符号以及与所述第二符号相邻的第三符号;以所述键字符串和所述值字符串为参数,调用预设键值对存储函数,将所述键信息和所述值信息以键值对形式存储到预设键值对对象中。通过采用上述技术方案,提升了弹幕消息的拆分效率,实现了对超长弹幕消息进行快速拆分处理。

Description

一种弹幕消息的处理方法、装置、终端和存储介质
技术领域
本发明实施例涉及弹幕技术领域,尤其涉及一种弹幕消息的处理方法、装置、终端和存储介质。
背景技术
随着网络交互平台的发展,越来越多的用户通过登录网络交互平台进行交流。其中,网络直播是非常受广大用户欢迎的应用。用户在观看直播的过程中,可以通过发送弹幕来表达自己的情感。其中,弹幕服务包括用户弹幕接收、处理和推送等重要功能。当客户端接收到弹幕服务器发送的弹幕消息后,需对弹幕消息进行解析,已将用户需要展示的弹幕消息在客户端界面进行展示。
其中,在弹幕消息的解析过程中,弹幕消息的拆分处理是相当为关键的一步,现有技术在对弹幕消息进行拆分处理时,一般采用的是终端系统自带的系统拆分函数。这种拆分方式使用起来比较简洁但是其效率不是很高,并且在字符串信息超过一定长度后系统拆分函数就无法进行正常的工作流程,也就无法对超长弹幕消息进行正常的解析。
发明内容
本发明实施例提供一种弹幕消息的处理方法、装置、终端和存储介质,以实现对弹幕消息进行快速拆分处理。
第一方面,本发明实施例提供了一种弹幕消息的处理方法,该方法包括:
依次遍历弹幕消息中的每个字符;
根据所述弹幕消息中的第一分隔符和第二分隔符确定所述弹幕消息中的键信息和值信息,并分别将所述键信息和所述值信息存储于预设键字符串和预设值字符串中,其中,所述第二分隔符包括第二符号以及与所述第二符号相邻的第三符号;
以所述键字符串和所述值字符串为参数,调用预设键值对存储函数,将所述键信息和所述值信息以键值对形成存储到预设键值对对象中。
第二方面,本发明实施例还提供了一种弹幕消息的处理装置,该装置包括:
字符遍历模块,用于依次遍历弹幕消息中的每个字符;
键值对信息获取模块,用于根据所述弹幕消息中的第一分隔符和第二分隔符确定所述弹幕消息中的键信息和值信息,并分别将所述键信息和所述值信息存储于预设键字符串和预设值字符串中,其中,所述第二分隔符包括第二符号以及与所述第二符号相邻的第三符号;
键值对信息存储模块,用于以所述键字符串和所述值字符串为参数,调用预设键值对存储函数,将所述键信息和所述值信息以键值对形式存储到预设键值对对象中。
第三方面,本发明实施例还提供了一种终端,该终端包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的弹幕消息的处理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所提供的弹幕消息的处理方法。
本发明实施例通过依次遍历弹幕消息中的每个字符,可根据弹幕消息中的第一分隔符和第二分隔符确定弹幕消息中的键信息和值信息,并分别将键信息和值信息存储于预设键字符串和预设值字符串中。通过以键字符串和值字符串为参数,调用预设键值对存储函数,可将键信息和值信息以键值对形式存储到预设键值对对象中,完成对弹幕消息的解析处理。相对于现有技术采用系统拆分函数对弹幕消息进行拆分处理的方式,本发明实施例的技术方案提升了弹幕消息的拆分效率,能够实现对超长弹幕消息进行解析。
附图说明
图1为本发明实施例一提供的一种弹幕消息的处理方法的流程图;
图2为本发明实施例二提供的一种弹幕消息的处理方法的流程图;
图3为本发明实施例三提供的一种弹幕消息的处理装置的结构框图;
图4为本发明实施例四提供的一种终端的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
为了清楚、明白的描述本发明各实施例,下面首先对本发明实施例的实现原理进行简单介绍:
本发明实施例对弹幕消息进行拆分是为了将弹幕消息按照键值对的形式进行存储,以供后续分发。因此,在存储之前,需将弹幕消息中的键和其对应的值分别从弹幕消息中识别并提取出来。其中,自定义的弹幕消息本身的结构特征符合预设弹幕协议,即利用弹幕消息中的第一分隔符可将弹幕消息分割为多条键值对信息。对于每条键值对信息,第二分隔符之前的字符串为键,第二分隔符之后的字符串为该键对应的值。据此,本发明实施例提供的对弹幕消息的拆分处理,是按照弹幕消息本身的构造特点所设计,通过依次遍历弹幕消息中的每个字符,根据弹幕消息中的第一分隔符和第二分隔符确定弹幕消息中的键信息和值信息,并将该键信息及其对应的值信息以键值对形式存储到预设键值对对象中。
实施例一
图1为本发明实施例一提供的一种弹幕消息的处理方法的流程图,该方法可以由弹幕消息的处理装置来执行,该装置可以通过软件和/或硬件的方式实现,该装置可以集成在安装有安卓操作系统的终端设备中。参见图1,本实施例的方法具体包括:
S110、依次遍历弹幕消息中的每个字符。
示例性的,可以通过调用FOR循环方法来对弹幕信息中的每个字符依次进行遍历解析。具体可以为:
调用长度获取方法获取弹幕消息的长度,在该长度范围内,按照弹幕消息中的字符的游标位置依次递增的形式,调用字符获取函数获取游标位置对应的字符。
其中,长度获取方法为msgBody.length()方法,该方法的作用是获取弹幕消息msgBody的长度信息。在获取到长度信息后,可将该长度信息标记为msgBodyLength作为后续字符遍历的参数。
示例性的,通过调用FOR循环方法for(int index=0;index<msgBodyLength;index++)方法,可将在长度msgBodyLength范围内的弹幕消息中的所有字符以数组的方式进行依次遍历解析。
在FOR循环方法中,index为弹幕消息中的字符的游标位置,index++表示按照游标位置依次加1的形式进行遍历。对于游标位置index对应的字符,可以游标位置index为参数,通过调用字符获取函数msgBody.charAt(index)函数来获取弹幕消息中游标位置为index的字符数据。同时,可将获取到的字符数据标记为char curChar对象,以进行下一步判断。
S120、根据弹幕消息中的第一分隔符和第二分隔符确定弹幕消息中的键信息和值信息,并分别将键信息和值信息存储于预设键字符串和预设值字符串中。
其中,第一分隔符为第一符号,第二分隔符包括第二符号以及与第二符号相邻的第三符号。本实施例中,根据弹幕消息本身的结构特征,第一分隔符为“/”,第二符号为“@”,第三符号为与第二符号“@”的下一个相邻的符号等于号“=”,即第二分隔符为“@=”。
需要说明的是,根据自定义的弹幕协议本身的结构特性,对于弹幕消息中的每条键值对信息,即两个第一分隔符“/”之间的弹幕消息,将第二分隔符号“@=”之前的字符串作为弹幕消息中的键信息,“@=”之后的字符串作为该键信息所对应的值信息。
优选的,本实施例在对弹幕消息按照字符位置依次递增的顺序进行遍历时,可先进行第一符号的识别,如果当前字符非第一符号,则继续判断该符号是否为第二符号,如果当前字符也不是第二符号,则将当前字符作为待拼接字符。或者,如果当前字符为第二符号,且与当前字符相邻的下一个字符非第三符号,则将当前字符也作为待拼接字符。
本实施例中,待拼接字符确定的目的在于从弹幕消息中提取出能够作为键信息或值信息的字符串。将待拼接字符存储于预设拼接对象中可用于下一步对存储的字符串进行键信息或值信息的识别和对应存储。
示例性的,如果当前字符为第二符号,且当前字符相邻的下一字符为第三符号,则将第二符号和第三符号作为第二分隔符,并将各待拼接字符按照遍历顺序进行拼接得到第一字符串,将第一字符串作为键信息存储到预设键字符串中,并清空预设拼接对象。这里的待拼接字符是指是预设拼接对象中存储的非第一符号且非第二符号的字符,这样设置的目的在于根据弹幕消息本身的结构特征,将每条键值对信息中“@=”之前的字符串作为键信息。即本实施例中,当前字符为第二符号且与当前字符相邻的下一字符为第三符号可作为键信息识别和存储的条件。
示例性的,若当前字符为第一符号,则将第一符号作为第一分隔符,将各待拼接字符按照遍历顺序进行拼接得到第二字符串,并将第二字符串作为与键信息对应的值信息存储到预设值字符串中,并清空预设拼接对象。本实施这样设置是为了得到键信息所对应的值信息,即判断出当前字符为第一符号是进行键值对的值信息识别和存储的条件,也即,由于第二分隔符之后的非第一符号且非第二符号的字符为待拼接字符,因此,如果当前字符为第一符号,则将待拼接字符按照遍历顺序得到的第二字符串为,将第二分隔符之后且第一分隔符之前的,非第一符号也非第二符号的字符所拼接成的字符串作为值信息,这样设置符合弹幕消息本身的结构特征,即“@=”之后且“/”之前的字符串为键值对的值信息。需要说明的是,本实施例中,预设拼接对象为valueStringBuilder,该对象一般用于对字符或字符串进行拼接处理,可以达到节省内存的效果。该valueStringBuilder对象可通过预设字符串拼接类StringBuilder的构造函数来构建,具体为:通过调用StringBuildervalueStringBuilder=new StringBuilder()得到valueStringBuilder对象。
本实施例中,利用预设拼接对象主要是为了将识别出的弹幕消息中属于键信息或值信息的字符拼接到该对象中。由于弹幕消息中的键信息和值信息均需存储到对应的键字符串或值字符串中,因此,预设拼接对象在字符的遍历过程中起到了对字符的临时存储作用。每次将预设拼接对象中存储的内容赋值给其他字符串之后,不论是键信息的赋值还是键信息所对应的值信息的赋值,均需对该预设拼接对象进行清空处理,以进行后续字符串的拼接动作。
可选的,除了上述依次遍历弹幕消息的每个字符得到键信息和值信息的方式,对于一些长度较短、数据量较小的弹幕消息,还可以采用调用系统拆分函数split("")的方式,对弹幕消息分别按照第一分隔符和第二分隔符进行拆分处理,得到至少一个键值对信息。
S130、以键字符串和值字符串为参数,调用预设键值对存储函数,将键信息和值信息以键值对形式存储到预设键值对对象中。
示例性的,预设键值对对象targetKvMap可通过哈希映射对象HashMap对象构建,具体的构造过程是通过调用哈希映射对象HashMap的构造方法HashMap<String,String>targetKvMap=new HashMap<>()方法来实现的。
其中,预设键值对存储函数targetKvMap.put()的作用是对键值对信息进行存储,在本实施例中主要是用于将识别出的键信息和值信息进行对应存储。
可以理解的是,本发明实施例的技术方案在对弹幕消息的处理过程进行介绍时,弹幕消息的内容不为空。但在具体应用过程中,如果通过调用内容判断函数调用TextUtils.isEmpty(msgBody)判断出弹幕消息的内容为空时,则直接通过返回函数returntargetKvMap来将一个空的targetKvMap对象返回即可。其中,内容判断函数TextUtils.isEmpty(msgBody)的作用是判断弹幕消息中是否包含有内容,如果返回的是false,则表示弹幕消息中包含有具体的内容;如果返回的是true,则表示弹幕消息的内容为空。
本实施例的技术方案,通过依次遍历弹幕消息中的每个字符,可根据弹幕消息中的第一分隔符和第二分隔符确定弹幕消息中的键信息和值信息,并分别将键信息和值信息存储于预设键字符串和预设值字符串中。通过以键字符串和值字符串为参数,调用预设键值对存储函数,可将键信息和值信息以键值对形式存储到预设键值对对象中,完成对弹幕消息的解析处理。相对于现有技术提供的采用系统拆分函数对弹幕消息进行拆分处理的方式,本实施例的技术方案提升了弹幕消息的拆分效率,能够实现对超长弹幕消息进行解析。
实施例二
图2为本发明实施例二提供的一种弹幕消息的处理方法的流程图,本实施例在上述实施例的基础上进行了优化,其中与上述实施例相同或相应的术语的解释在此不再赘述。参见图2,本实施例提供的方法包括:
S201、按照游标位置递增的形式,获取弹幕消息中的当前字符。
S202、判断当前字符是否为第一符号,若是,则执行步骤S203;否则,执行步骤S204。
示例性的,本实施例中对字符的识别都可以采用if….else的字符判断方法来实现。例如本实施例中,判断当前字符是否为第一符号的执行步骤具体可以为:以第一符号“/”为参数,调用字符判断方法if(curChar=='/')来判断当前游标位置index对应的字符curChar是否为第一符号“/”。
S203、将各待拼接字符按照遍历顺序进行拼接得到第二字符串,并将第二字符串作为与键信息对应的值信息存储到预设值字符串中,并清空预设拼接对象,继续执行步骤S208。
其中,值字符串value可预先进行定义,值信息的存储与键信息的存储方式相同,均可通过调用预设字符串转换函数valueStringBuilder.toString(),将拼接对象valueStringBuilder转换成一个字符串string对象。其中,转换后的第二字符串作为值信息存入预设值字符串value中,即通过执行value=valueStringBuilder.toString()方法,将预设拼接对象转换为字符串对象所得到的第二字符串存入预设值字符串value中。此时,由于预设拼接对象valueStringBuilder中的值信息已赋值到对应的值字符串value中,因此需对预设拼接对象做清空处理。
示例性的,清空预设拼接对象的操作可通过调用预设字符拼接对象中的数据清除方法valueStringBuilder.delete(0,valueStringBuilder.length())函数来实现,该函数的作用是进行数据清空处理,在本实施例中,主要是将预设拼接对象valueStringBuilder中已存储的数据清空,使得该预设拼接对象能够继续存储新的数据。
S204、判断当前字符是否为第二符号,若是,则执行步骤S205;否则,执行步骤S206。
本实施例中,如果判断出当前字符不是第一符号,则继续判断当前字符是否为第二字符。其中,第二字符的判断具体可通过如下方法来实现:
以第二符号“@”为参数,通过调用字符判断方法else if(curChar=='@'),来判断curChar是不是第二符号“@”,如果是,则将识别对象锁定到当前字符的下一个字符,即获取游标位置向后移动一位后的字符数据。
S205、判断当前字符的下一字符是否为第三符号,若是,则执行步骤S207;否则,执行步骤S206。
示例性的,将游标位置向后移动一位可通过调用index++方法来对游标位置index执行加1操作,然后通过调用字符获取函数char nextChar=msgBody.charAt(index)函数来获取到游标位置加一后的字符数据nextChar。接着,还需通过调用字符判断方法if(nextChar=='=')来判断当前字符的下一字符nextChar是否为第三符号“=”。
S206、将当前字符作为待拼接字符,并将待拼接字符存储于预设拼接对象中。
示例性的,将待拼接字符存储于预设拼接对象可通过调用预设字符拼接对象valueStringBuilder中的字符拼接方法valueStringBuilder.append(),将游标位置对应的字符添加到预设字符拼接对象中,以进行拼接。
示例性的,如果当前字符是第二符号“@”,但当前字符的下一符号非第三符号“=”,则说明当前符号只是弹幕消息中表示值信息的字符,而非用于区分键信息和值信息的分隔符,此时,还需将当前字符作为待拼接字符,并与其它字符进行拼接处理。
需要说明的是,在将待拼接字符存储于预设拼接对象中后,还需判断当前游标位置是否已经达到弹幕消息的最后一位,具体可通过调用预设判断方法来实现。
其中,预设判断方法为if(index==msgBodyLength-1),由于游标位置index是从0开始进行遍历的,因此,预设判断方法中参数“msgBodyLength-1”即可表示弹幕消息的最后一个字符。本实施例中,如果判断出index已移动到弹幕消息的最后一位,则将上述第二字符串作为值信息,并存储到预设值字符串中;如果index所在的位置不是弹幕消息的最后一位,则继续进行下一字符的识别。
S207、第二符号和第三符号作为第二分隔符,将各待拼接字符按照遍历顺序进行拼接得到第一字符串,将第一字符串作为键信息存储到预设键字符串中,并清空预设拼接对象。
示例性的,如果判断出当前字符的下一字符是第三符号“=”,则将各待拼接字符按照遍历顺序进行拼接得到第一字符串,将第一字符串作为键信息存储到预设键字符串中。
其中,预设键字符串为预先定义的一个空的字符串key,具体定义方法如下:String key=""。
本实施例中,在将第一字符串作为键信息存储到预设键字符串中之前,还可以包括调用预设字符串转换函数valueStringBuilder.toString,将拼接对象valueStringBuilder转换成一个字符串string对象。具体的,可通过调用预设字符串转换方法key=valueStringBuilder.toString()将转换后的第一字符串作为键信息存入预设键字符串中。
此时,由于预设拼接对象valueStringBuilder中的键信息已赋值到对应的键字符串key中,因此需对预设拼接对象做清空处理。具体清空方法可参见上述数据清空方法,这里不再赘述。
S208、判断值字符串中的内容是否为空,若是,执行步骤S209;否则,结束。
示例性,本实施例可分别以键字符串和值字符串为参数,调用字符串非空判断方法if(!TextUtils.isEmpty(value)&&!TextUtils.isEmpty(key))方法来判断值信息和键信息是否为空,即判断value和key中是否存储有字符串。
S209、判断键字符串中的内容是否为空,若是,执行步骤S210;否则,结束。
需要说明的是,本实施例中S208和S209的执行顺序不存在先后之分,可以同时进行也可先后进行。
S210、以键字符串和值字符串为参数,调用预设键值对存储函数,将非空键信息和非空值信息以键值对形式存储到预设键值对对象中。
示例性的,如果判断出键信息和对应的值信息均不为空,则以键字符串“key”和值字符串“value”为参数,调用预设键值对存储函数targetKvMap.put(key,value)进行键值对信息的存储。
其中,该字符串存储方法的作用是进行数据存储,在本实施例中是将键信息和值信息以键值对形成存储到预设键值对对象targetKvMap中。如果键信息或值信息中只要有一个为空,则不进行键值对的存储处理。
本实施例通过采用上述循环方式,可将所有弹幕消息按照键值对形成全部存储到targetKvMap对象中。下面,以具体的弹幕消息为例,对本实施例提供的弹幕消息的处理方法进行详细说明:
“type@=uenter/rid@=104838/uid@=20080138/nn@=单翼幻想/level@=19/ic@=avatar@S020@S08@S01@S38_avatar/rni@=0/el@=/sahf@=0/w gei@=0/”,本实施例中,游标位置index从0开始,对上述弹幕消息中的每个字符依次进行遍历。
如果弹幕消息中游标位置的字符非第一符号,且判断出该游标位置的字符非第二符号时,例如index=0时,所对应的字符为“t”,该字符非第一符号“/”,也非第二符号“@”,因此,调用预设字符拼接对象中的字符拼接方法,即valueStringBuilde对象中的valueStringBuilder.append(curChar)方法,可将字符“t”添加到valueStringBuilder对象中。每完成一个字符的识别。然后将游标位置向后移动一位,即通过对游标位置进行加1处理,例如执行index++操作,可使得游标位置index加1,即继续识别下一个字符。对于上述弹幕消息中,字符串“type”中的各字符,都可按照上述识别方式被添加到valueStringBuilder对象中,以拼接得到字符串“type”。
当字符串“type”按照上述识别方式被添加到valueStringBuilder对象中后,当前游标位置的字符为第二符号“@”,且当前字符的下一个字符为第三符号“=”,此时,将valueStringBuilder对象中存储的“type”转换为赋值给键字符串key,赋值完成后,key中存储的则为“type”,并需清空预设拼接对象valueStringBuilder。
在接下来的识别过程中,“uenter”中各字符的识别与上述识别方式相同,且依次对这几个字符识别后,字符串“uenter”中的各字符将被存入清空后的预设字符拼接对象中,即此时valueStringBuilder对象中存储的是字符串“uenter”。
由于“uenter”识别完成后的下一个字符,即当前字符为第一符号“/”,此时,可通过调用预设字符串转换函数,即valueStringBuilder.toString()方法,得到第二字符串作为值信息。该值信息与键信息的处理方式相类似,可用变量value来接收该值信息,并清空预设拼接对象。
在完成键信息和对应值信息的赋值后,在键信息和对应值信息为非空信息的条件下,通过调用预设键值对对象中的字符串存储方法targetKvMap.put(key,value),可将键信息和值信息以键值对形式存储到预设键值对对象targetKvMap中。
接着,游标位置index进行加一处理,如果加一处理后超出弹幕消息的长度msgBodyLength,则自动跳出字符的遍历。通过采用上述循环处理,可将所有弹幕消息按照键值对形成全部存储到targetKvMap对象中。
本实施例在上述实施例的基础上,基于弹幕消息本身的结构采用循环方式对弹幕消息中的各字符依次进行了识别处理。在识别过程中,采用了多个if…else嵌套的方式,对字符是否为第一符号、第二符号和第三符号依次进行了判断,并从中提取出了键值对信息存储到预设键值对对象中。
实施例三
图3为本发明实施例三提供的一种弹幕消息的处理装置的结构框图,如图3所示,该装置包括:字符遍历模块310、键值对信息获取模块320和键值对信息存储模块330。
其中,字符遍历模块310,用于依次遍历弹幕消息中的每个字符;
键值对信息获取模块320,用于根据所述弹幕消息中的第一分隔符和第二分隔符确定所述弹幕消息中的键信息和值信息,并分别将所述键信息和所述值信息存储于预设键字符串和预设值字符串中,其中,所述第二分隔符包括第二符号以及与所述第二符号相邻的第三符号;
键值对信息存储模块330,用于以所述键字符串和所述值字符串为参数,调用预设键值对存储函数,将所述键信息和所述值信息以键值对形成存储到预设键值对对象中。
本实施例的技术方案,通过依次遍历弹幕消息中的每个字符,可根据弹幕消息中的第一分隔符和第二分隔符确定弹幕消息中的键信息和值信息,并分别将键信息和值信息存储于预设键字符串和预设值字符串中。通过以键字符串和值字符串为参数,调用预设键值对存储函数,可将键信息和值信息以键值对形式存储到预设键值对对象中,完成对弹幕消息的解析处理。相对于采用系统拆分函数对弹幕消息进行拆分处理的方式,本发明实施例的技术方案提升了弹幕消息的拆分效率,能够对超长弹幕消息进行解析。
在上述实施例的基础上,键值对信息获取模块320包括:
拼接单元,用于如果识别出当前字符非第一符号且非第二符号,或者,所述当前字符为第二符号且与所述当前字符相邻的下一字符非第三符号,则将所述当前字符作为待拼接字符,并将所述待拼接字符存储于预设拼接对象中;
第一字符串确定单元,用于若所述当前字符为第二符号且与所述当前字符相邻的下一字符为第三符号,则所述第二符号和第三符号作为第二分隔符,将各所述待拼接字符按照遍历顺序进行拼接得到第一字符串,将第一字符串作为键信息存储到预设键字符串中;
第一清空单元,用于对存储有所述第一字符串的预设拼接对象做清空处理;
第二字符串确定单元,用于若所述当前字符为第一符号,则将第一符号作为第一分隔符,将各所述待拼接字符按照遍历顺序进行拼接得到第二字符串,并将所述第二字符串作为与键信息对应的值信息存储到预设值字符串中;
第二清空单元,用于对存储有所述第二字符串的预设拼接对象做清空处理。
在上述实施例的基础上,字符遍历模块310具体用于:
调用长度获取方法获取弹幕消息的长度;
在所述长度范围内,按照所述弹幕消息中的字符的游标位置递增的形式,依次调用字符获取函数获取所述游标位置对应的字符。
在上述实施例的基础上,所述拼接单元,具体用于:如果识别出当前字符非第一符号且非第二符号,或者,所述当前字符为第二符号且与所述当前字符相邻的下一字符非第三符号,则将所述当前字符作为待拼接字符,调用预设字符拼接对象中的字符拼接方法,将所述游标位置对应的字符添加到所述预设字符拼接对象中。
在上述实施例的基础上,所述第一清空单元或所述第二清空单元具体用于:
调用预设字符拼接对象中的数据清除方法,对所述预设字符拼接对象中的数据做清空处理。
在上述实施例的基础上,该装置还包括:
转换模块,用于在将第一字符串作为键信息存储到预设键字符串中之前,调用预设字符串转换函数将所述预设拼接对象转换成字符串对象。
在上述实施例的基础上,所述键值对信息存储模块330具体用于:
分别以所述键字符串和所述值字符串为参数,调用字符串非空判断方法进行字符串内容的判断;
如果判断出所述键信息和所述值信息均为非空信息,则以所述键字符串和所述值字符串为参数,调用预设键值对存储函数,将非空键信息和非空值信息以键值对形式存储到预设键值对对象中。
本发明实施例所提供的弹幕消息的处理装置可执行本发明任意实施例所提供的弹幕消息的处理方法,具备执行方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的弹幕消息的处理方法。
实施例四
图4为本发明实施例四提供的一种终端的结构示意图。图4示出了适于用来实现本发明实施方式的示例性终端12的框图。图4显示的终端12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,终端12以通用计算设备的形式表现。终端12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
终端12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被终端12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。终端12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
终端12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该终端12交互的设备通信,和/或与使得该终端12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,终端12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与终端12的其它模块通信。应当明白,尽管图中未示出,可以结合终端12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明任意实施例所提供的弹幕消息的处理方法,该方法包括:
依次遍历弹幕消息中的每个字符;
根据所述弹幕消息中的第一分隔符和第二分隔符确定所述弹幕消息中的键信息和值信息,并分别将所述键信息和所述值信息存储于预设键字符串和预设值字符串中,其中,所述第二分隔符包括第二符号以及与所述第二符号相邻的第三符号;
以所述键字符串和所述值字符串为参数,调用预设键值对存储函数,将所述键信息和所述值信息以键值对形式存储到预设键值对对象中。
实施例五
本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所提供的弹幕消息的处理方法,该方法包括:
依次遍历弹幕消息中的每个字符;
根据所述弹幕消息中的第一分隔符和第二分隔符确定所述弹幕消息中的键信息和值信息,并分别将所述键信息和所述值信息存储于预设键字符串和预设值字符串中,其中,所述第二分隔符包括第二符号以及与所述第二符号相邻的第三符号;
以所述键字符串和所述值字符串为参数,调用预设键值对存储函数,将所述键信息和所述值信息以键值对形式存储到预设键值对对象中。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种弹幕消息的处理方法,其特征在于,包括:
依次遍历弹幕消息中的每个字符;
根据所述弹幕消息中的第一分隔符和第二分隔符确定所述弹幕消息中的键信息和值信息,并分别将所述键信息和所述值信息存储于预设键字符串和预设值字符串中,其中,所述第二分隔符包括第二符号以及与所述第二符号相邻的第三符号;
以所述键字符串和所述值字符串为参数,调用预设键值对存储函数,将所述键信息和所述值信息以键值对形式存储到预设键值对对象中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述弹幕消息中的第一分隔符和第二分隔符确定所述弹幕消息中的键信息和值信息,并分别将所述键信息和所述值信息存储于预设键字符串和预设值字符串中,包括:
如果识别出当前字符非第一符号且非第二符号,或者,所述当前字符为第二符号且与所述当前字符相邻的下一字符非第三符号,则将所述当前字符作为待拼接字符,并将所述待拼接字符存储于预设拼接对象中;
若所述当前字符为第二符号且与所述当前字符相邻的下一字符为第三符号,则所述第二符号和第三符号作为第二分隔符,将各所述待拼接字符按照遍历顺序进行拼接得到第一字符串,将第一字符串作为键信息存储到预设键字符串中,并清空所述预设拼接对象;
若所述当前字符为第一符号,则将第一符号作为第一分隔符,将各所述待拼接字符按照遍历顺序进行拼接得到第二字符串,并将所述第二字符串作为与键信息对应的值信息存储到预设值字符串中,并清空所述预设拼接对象。
3.根据权利要求2所述的方法,其特征在于,依次遍历弹幕消息中的每个字符,包括:
调用长度获取方法获取弹幕消息的长度;
在所述长度范围内,按照所述弹幕消息中的字符的游标位置依次递增的形式,调用字符获取函数获取所述游标位置对应的字符。
4.根据权利要求3所述的方法,其特征在于,将所述待拼接字符存储于预设拼接对象中,包括:
调用预设字符拼接对象中的字符拼接方法,将所述游标位置对应的字符添加到所述预设字符拼接对象中。
5.根据权利要求2所述的方法,其特征在于,所述清空所述预设拼接对象,包括:
调用预设字符拼接对象中的数据清除方法,对所述预设字符拼接对象中的数据做清空处理。
6.根据权利要求2所述的方法,其特征在于,在将第一字符串作为键信息存储到预设键字符串中之前,所述方法还包括:
调用预设字符串转换函数将所述预设拼接对象转换成字符串对象。
7.根据权利要求1所述的方法,其特征在于,以所述键字符串和所述值字符串为参数,调用预设键值对存储函数,将所述键信息和所述值信息以键值对形式存储到预设键值对对象中,包括:
分别以所述键字符串和所述值字符串为参数,调用字符串非空判断方法进行字符串内容的判断;
如果判断出所述键信息和所述值信息均为非空信息,则以所述键字符串和所述值字符串为参数,调用预设键值对存储函数,将非空键信息和非空值信息以键值对形式存储到预设键值对对象中。
8.一种弹幕消息的处理装置,其特征在于,包括:
字符遍历模块,用于依次遍历弹幕消息中的每个字符;
键值对信息获取模块,用于根据所述弹幕消息中的第一分隔符和第二分隔符确定所述弹幕消息中的键信息和值信息,并分别将所述键信息和所述值信息存储于预设键字符串和预设值字符串中,其中,所述第二分隔符包括第二符号以及与所述第二符号相邻的第三符号;
键值对信息存储模块,用于以所述键字符串和所述值字符串为参数,调用预设键值对存储函数,将所述键信息和所述值信息以键值对形式存储到预设键值对对象中。
9.一种终端,其特征在于,所述终端包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的弹幕消息的处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的弹幕消息的处理方法。
CN201810719846.9A 2018-07-03 2018-07-03 一种弹幕消息的处理方法、装置、终端和存储介质 Active CN108989902B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810719846.9A CN108989902B (zh) 2018-07-03 2018-07-03 一种弹幕消息的处理方法、装置、终端和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810719846.9A CN108989902B (zh) 2018-07-03 2018-07-03 一种弹幕消息的处理方法、装置、终端和存储介质

Publications (2)

Publication Number Publication Date
CN108989902A true CN108989902A (zh) 2018-12-11
CN108989902B CN108989902B (zh) 2020-10-16

Family

ID=64536732

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810719846.9A Active CN108989902B (zh) 2018-07-03 2018-07-03 一种弹幕消息的处理方法、装置、终端和存储介质

Country Status (1)

Country Link
CN (1) CN108989902B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110222286A (zh) * 2019-05-21 2019-09-10 平安普惠企业管理有限公司 信息获取方法、装置、终端和计算机可读存储介质
CN110351715A (zh) * 2019-07-15 2019-10-18 西安中兴物联软件有限公司 At指令处理方法、终端适配器及计算机可读存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000090115A (ja) * 1998-09-11 2000-03-31 Fuji Xerox Co Ltd インデクス作成方法および検索方法
US20020188926A1 (en) * 2001-05-15 2002-12-12 Hearnden Stephen Owen Searching for sequences of character data
US20090316887A1 (en) * 2007-12-18 2009-12-24 Donghyuk Lee Database encryption and query method keeping order within bucket partially
CN103455471A (zh) * 2012-06-01 2013-12-18 阿里巴巴集团控股有限公司 一种将文本解析成键值对的方法和装置
CN104462265A (zh) * 2014-11-23 2015-03-25 国云科技股份有限公司 一种数据库字符串分割及分割后操作的通用方法
CN105354020A (zh) * 2015-09-30 2016-02-24 武汉钢铁(集团)公司 一种Json格式数据解析方法及数据接收端
CN105430534A (zh) * 2015-10-29 2016-03-23 Tcl集团股份有限公司 一种智能设备上报数据的方法和系统
CN106557452A (zh) * 2015-09-25 2017-04-05 阿里巴巴集团控股有限公司 用于数值字符或字符串的显示方法、装置、设备及系统
CN106954094A (zh) * 2017-03-21 2017-07-14 武汉斗鱼网络科技有限公司 弹幕信息的处理方法、装置及服务终端

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000090115A (ja) * 1998-09-11 2000-03-31 Fuji Xerox Co Ltd インデクス作成方法および検索方法
US20020188926A1 (en) * 2001-05-15 2002-12-12 Hearnden Stephen Owen Searching for sequences of character data
US20090316887A1 (en) * 2007-12-18 2009-12-24 Donghyuk Lee Database encryption and query method keeping order within bucket partially
CN103455471A (zh) * 2012-06-01 2013-12-18 阿里巴巴集团控股有限公司 一种将文本解析成键值对的方法和装置
CN104462265A (zh) * 2014-11-23 2015-03-25 国云科技股份有限公司 一种数据库字符串分割及分割后操作的通用方法
CN106557452A (zh) * 2015-09-25 2017-04-05 阿里巴巴集团控股有限公司 用于数值字符或字符串的显示方法、装置、设备及系统
CN105354020A (zh) * 2015-09-30 2016-02-24 武汉钢铁(集团)公司 一种Json格式数据解析方法及数据接收端
CN105430534A (zh) * 2015-10-29 2016-03-23 Tcl集团股份有限公司 一种智能设备上报数据的方法和系统
CN106954094A (zh) * 2017-03-21 2017-07-14 武汉斗鱼网络科技有限公司 弹幕信息的处理方法、装置及服务终端

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110222286A (zh) * 2019-05-21 2019-09-10 平安普惠企业管理有限公司 信息获取方法、装置、终端和计算机可读存储介质
CN110351715A (zh) * 2019-07-15 2019-10-18 西安中兴物联软件有限公司 At指令处理方法、终端适配器及计算机可读存储介质

Also Published As

Publication number Publication date
CN108989902B (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
CN109960541A (zh) 启动小程序的方法、设备和计算机存储介质
CN109587252A (zh) 运营商参数的加载方法、装置、电子设备及存储介质
CN103369477B (zh) 显示媒体信息方法、装置、客户端,图形控件显示方法和装置
US10356025B2 (en) Identifying and splitting participants into sub-groups in multi-person dialogues
CN109558525B (zh) 一种测试数据集的生成方法、装置、设备和存储介质
CN108959257A (zh) 一种自然语言解析方法、装置、服务器及存储介质
CN109710333A (zh) 寄宿应用的处理方法、设备及计算机可读存储介质
CN109275042A (zh) 一种弹幕消息的分发方法、装置、终端和存储介质
CN110377750A (zh) 评论生成及评论生成模型训练方法、装置及存储介质
CN109242320A (zh) 订单分配方法、装置、服务器及存储介质
CN108989902A (zh) 一种弹幕消息的处理方法、装置、终端和存储介质
CN109495549A (zh) 一种应用拉活的方法、设备和计算机存储介质
CN108551481A (zh) 一种文件上传方法、装置、服务器及存储介质
CN103559242A (zh) 语音输入信息的方法及终端设备
CN109933254A (zh) 展示阅读内容的方法、设备和计算机存储介质
CN109657127A (zh) 一种答案获取方法、装置、服务器及存储介质
CN112527235A (zh) 语音播放方法、装置、设备以及存储介质
CN108846098A (zh) 一种信息流摘要生成及展示方法
CN105471998A (zh) 一种用于在多个终端中同步应用数据的方法和装置
CN115934076B (zh) 跨平台客户端的微服务提供装置、方法和电子设备
CN107862035A (zh) 会议记录的网络读取方法、装置、智能平板和存储介质
CN110110099A (zh) 一种多媒体文件检索方法及装置
CN109241164A (zh) 一种数据处理方法、装置、服务器及存储介质
CN108259958A (zh) 遥控按键响应方法、装置、设备和存储介质
CN109933444A (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