一种字符串处理方法及装置与流程

文档序号:14554464阅读:144来源:国知局
一种字符串处理方法及装置与流程

本申请涉及计算机数据处理技术领域,尤其涉及一种字符串处理方法及装置。



背景技术:

为了满足使用不同语言的用户需要,应用程序往往需要支持多种语言,为此计算机设备中预置有多种语言供用户选择使用,并且其中的一种语言被设置为系统默认语言。

预置有多种语言的计算机设备中设置有系统资源目录,不同语言在该系统资源目录中存在对应的子目录,系统默认语言在该资源目录中也存在独立的子目录,一种语言对应的子目录下可以存储该语言的字符资源文件。一种语言的字符资源文件用于对使用该语言的字符串资源内容进行定义。例如,在中文字符资源文件中定义有“字符串a=测试字符”,表示id为“字符串a”的字符串资源,其中文字符串资源内容为“测试字符”,如果用户界面中需要显示字符串a且用户选择使用中文,则字符串a在用户界面中被显示为“测试字符”;在英文字符资源文件中定义有“字符串a=teststring”,表示id为“字符串a”的字符串资源,其英文字符串资源内容为“teststring”,如果用户界面中需要显示字符串a且用户选择使用英文,则字符串a在用户界面中被显示为“teststring”。

用户可以选择使用多种语言展示用户界面,并且可以设置所述多种语言的优先级。比如,用户可以选择使用中文和英文,并且设置中文的优先级高于英文的优先级。

以用户选择使用第一语言和第二语言,并且第一语言的优先级高于第二语言的优先级为例,目前,针对某个字符串(比如字符串a)资源内容的查找顺序为:首先在第一语言的字符资源文件中查找字符串a的资源内容,如果字符串a在第一语言的字符资源文件中有定义,则输出字符串a在该字符资源文件中所对应的字符串资源内容,否则在第二语言的字符资源文件中查找字符串a的资源内容,如果字符串a在第二语言的字符资源文件中有定义,则输出字符串a在该资源文件中所对应的字符串资源内容,否则从系统默认语言的字符资源文件中查找字符串a所对应的字符串资源内容,并输出查找到的字符串资源内容。

上述现有技术存在字符串处理不合理的问题。举例来说,某应用程序有一个字符资源标识为字符串a(以下用stringa表示),该应用程序支持的语言包括简体中文、繁体中文和英文。stringa在系统默认语言的字符资源文件中的定义为:stringa=测试字符,在简体中文的字符资源文件中没有定义,在繁体中文的字符资源文件中的定义为:stringa=測試字元。如果设置使用的语言按照优先级从高到低的顺序为:简体中文、英文、繁体中文,则按照上述流程,stringa最终被输出为teststring。但是,在应用程序支持简体中文,选择使用的语言中包括简体中文且优先级最高,并且系统默认语言也是简体中文的情况下,最终输出的却是英文,显然不合理。



技术实现要素:

本申请实施例提供一种字符传处理方法及装置,用以提高字符串处理的合理性。

第一方面,提供一种字符串处理方法,包括:

获取字符串资源标识;

在n个设置使用的语言中最高优先级语言的字符资源中,查找所述字符串资源标识对应的字符串资源内容,若未查找到,则根据系统默认语言的字符资源得到所述字符串资源标识对应的第一字符串资源内容,n为大于1的整数;

判断所述第一字符串资源内容中字符的unicode码的取值是否在所述最高优先级语言字符的unicode码取值范围内,若是,则输出所述第一字符串资源内容;否则,获取所述n个设置使用的语言中与所述最高优先级语言具有相同属性的语言,根据所述具有相同属性的语言的字符资源得到所述字符串资源标识对应的第二字符串资源内容,并输出所述第二字符串资源内容。

可选地,若所述n个设置使用的语言中存在与所述最高优先级语言具有相同属性的多个语言,则所述根据所述具有相同属性的语言的字符资源得到所述字符串资源标识对应的第二字符串资源内容,包括:根据所述多个语言中的最高优先级语言的字符资源,得到所述字符串资源标识对应的第二字符串资源内容。

可选地,若所述n个设置使用的语言中不存在与所述最高优先级语言具有相同属性的语言,则所述方法还包括:

按照优先级从高到低的顺序,在n-1个设置使用的语言的字符资源中,查找所述字符串资源标识对应的第三字符串资源内容,输出所述第三字符串资源内容。其中,所述n-1个设置使用的语言为所述n个设置使用的语言中除最高优先级的语言。

可选地,若按照优先级从高到低的顺序,未在所述n-1个设置使用的语言的字符资源中查找到所述字符串资源标识对应的第三字符串资源内容,则所述方法还包括:根据系统默认语言的字符资源,得到所述字符串资源标识对应的第四字符串资源内容,输出所述第四字符串资源内容。

可选地,所述与所述最高优先级语言具有相同属性的语言为:与所述最高优先级语言属于相同国家或地区的语言。

第二方面,提供一种字符串处理装置,包括:获取模块、处理模块和输出模块;

所述获取模块,用于获取字符串资源标识;

所述处理模块,用于在n个设置使用的语言中最高优先级语言的字符资源中,查找所述字符串资源标识对应的字符串资源内容,若未查找到,则根据系统默认语言的字符资源得到所述字符串资源标识对应的第一字符串资源内容,n为大于1的整数;以及

判断所述第一字符串资源内容中字符的unicode码的取值是否在所述最高优先级语言字符的unicode码取值范围内,若是,则通过所述输出模块输出所述第一字符串资源内容;否则,获取所述n个设置使用的语言中与所述最高优先级语言具有相同属性的语言,根据所述具有相同属性的语言的字符资源得到所述字符串资源标识对应的第二字符串资源内容,并通过所述输出模块输出所述第二字符串资源内容;

所述输出模块,用于输出所述处理模块得到的字符串资源内容。

可选地,所述处理模块还用于:

若所述n个设置使用的语言中不存在与所述最高优先级语言具有相同属性的语言,则按照优先级从高到低的顺序,在n-1个设置使用的语言的字符资源中,查找所述字符串资源标识对应的第三字符串资源内容;其中,所述n-1个设置使用的语言为所述n个设置使用的语言中除最高优先级的语言;以及

通过所述输出模块输出所述第三字符串资源内容。

可选地,所述处理模块还用于:若按照优先级从高到低的顺序,未在所述n-1个设置使用的语言的字符资源中查找到所述字符串资源标识对应的第三字符串资源内容,则根据系统默认语言的字符资源得到所述字符串资源标识对应的第四字符串资源内容,并通过所述输出模块输出所述第四字符串资源内容。

第三方面,提供一种计算机设备,包括:一个或多个处理器;以及一个或多个存储器,所述存储器上存储有指令,所述指令被所述一个或多个处理器执行时,使得所述计算机设备执行上述第一方面中任一项所述的方法。

第四方面,提供一个或多个计算机可读介质,所述可读介质上存储有指令,所述指令被一个或多个处理器执行时,使得计算机设备执行上述第一方面中任一项所述的方法。

第五方面,提供一种计算机程序产品,用于存储计算机程序,该计算机程序用于执行上述第一方面中任一项所述的方法。

本申请的上述实施例中,当在n个设置使用的语言中最高优先级语言的字符资源中,未查找到字符串资源标识对应的字符串资源内容,根据系统默认语言的字符资源得到所述字符串资源标识对应的第一字符串资源内容,并进一步判断所述第一字符串资源内容中字符的unicode码的取值是否在所述最高优先级语言字符的unicode码取值范围内,若是,则输出所述第一字符串资源内容;否则,获取所述n个设置使用的语言中与所述最高优先级语言具有相同属性的语言,根据所述具有相同属性的语言的字符资源得到所述字符串资源标识对应的第二字符串资源内容,并输出所述第二字符串资源内容。可以看出,本申请实施例能够当在优先级最高的语言的字符资源中没有找到字符串资源标识所对应的字符串资源内容的情况下,优先根据系统默认语言的字符资源或是具有相同属性的语言的字符资源进行字符串处理,从而提高了字符串处理的合理性。

附图说明

图1为本申请实施例提供的一种字符串处理流程示意图;

图2为本申请另一实施例提供的字符串处理流程示意图;

图3为本申请实施例提供的字符串处理装置的结构示意图;

图4为本申请实施例提供的计算机设备的结构示意图。

具体实施方式

本申请实施例中使用了如下技术术语,下面首先对本申请实施例中涉及的一些技术术语进行说明。

字符串资源标识(id):用于标识字符串资源。

字符资源:通常以文件形式存在,比如可扩展标记语言(extensiblemarkuplanguage,xml)文件。以xml文件为例,一种语言对应一个xml文件,该xml文件中定义有字符串资源标识所对应的字符串资源内容。同一个字符串资源标识在不同的xml文件中有不同的定义。比如,标识为a的字符串资源,在中文对应的xml文件中定义为“测试字符”,在英文对应的xml文件中定义为“teststring”。

本申请实施例可应用于系统应用程序或第三方应用程序,所述应用程序可以是基于android系统的应用程序。

下面结合附图对本申请实施例进行详细描述。

参见图1,为本申请实施例提供的一种字符串处理流程示意图。该流程可由字符串处理装置实现。该字符串处理装置可以是计算机设备,或者是计算机设备中的装置。该计算机设备可以是任何具有数据处理能力的设备,比如可以是终端,具体可以包括:智能手机、平板电脑、笔记本电脑、个人数字助理(personaldigitalassistant,pda)、智能穿戴设备或车载终端等类似设备。

如图所示,给流程可以包括:

s101:获取字符串资源标识。

在一种可能的场景中,应用程序运行的过程中需要在用户界面中显示字符串,此时,首先获取字符串资源标识。其中,所述应用程序可以是系统应用程序,也可以是第三方应用程序。

s102:在n个(n为大于1的整数)设置使用的语言中最高优先级语言的字符资源中,查找所述字符串资源标识对应的字符串资源内容,若未查找到,则转入s103,若查找到则转入s106。

其中,所述n个设置使用的语言可以是用户选择使用的语言。用户可以通过系统提供的语言设置界面选择使用一种或多种语言,如果选择多种语言,则还可以设置这些语言的优先级,按照优先级从高到低的顺序,可称为:第一语言、第二语言、第三语言,以此类推。如果用户选择的语言与应用程序支持的语言不匹配,则所述n个设置使用的语言可以是用户选择的语言与应用程序支持的语言的交集。

s103:根据系统默认语言的字符资源,得到所述字符串资源标识对应的第一字符串资源内容。

s104:判断第一字符串资源内容中字符的unicode码的取值是否在所述最高优先级语言字符的unicode码取值范围内,若是,则转入s106,否则转入s105。

其中,一种语言中的所有字符的unicade码的取值范围通常构成一个连续取值范围,不同种语言的字符的unicade码有不同的取值范围。比如,中文字符的unicade码的取值范围(用十六进制表示)为4e00~9fbb。

s105:获取所述n个设置使用的语言中与所述最高优先级语言具有相同属性的语言,根据所述具有相同属性的语言的字符资源,得到所述字符串资源标识对应的第二字符串资源内容。

可选地,所述与所述最高优先级语言具有相同属性的语言,可以是与所述最高优先级语言属于相同国家或地区的语言。比如,如果所述最高优先级语言为中文简体,则与中文简体具有相同属性的语言包括中文繁体。

可选地,若所述n个设置使用的语言中存在与所述最高优先级语言具有相同属性的多个语言,则可以根据所述多个语言中的最高优先级语言的字符资源,得到所述字符串资源标识对应的第二字符串资源内容。

s106:输出当前查找到的字符串资源内容。

可选地,输出字符串资源内容具体可以包括:将字符串资源内容显示在显示设备上,或者将字符串资源内容输出该其他设备,或者以其他方式输出,本申请实施例对此不做限制。

进一步地,上述流程的s105中,若所述n个设置使用的语言中不存在与所述最高优先级语言具有相同属性的语言,则可以按照优先级从高到低的顺序,在除上述最高优先级语言的n-1个设置使用的语言的字符资源中,查找所述字符串资源标识对应的第三字符串资源内容。

可选地,若按照优先级从高到低的顺序,未在所述n-1个设置使用的语言的字符资源中查找到所述字符串资源标识对应的第三字符串资源内容,则可以根据系统默认语言的字符资源,得到所述字符串资源标识对应的第四字符串资源内容。

可以看出,本申请实施例能够当在优先级最高的语言的字符资源中没有找到字符串资源标识对应的字符串资源内容的情况下,优先根据系统默认语言的字符资源或是具有相同属性的语言的字符资源进行字符串处理,从而提高了字符串处理的合理性,进而可以提高应用程序的字符串资源兼容性。

为了更清楚地理解本申请实施例,下面结合一个具体应用场景,对本申请实施例的具体实现过程进行详细说明。

该应用场景中,某应用程序有一个字符资源为字符串a(以下用stringa表示),该应用程序支持的语言包括简体中文、繁体中文和英文。

用户选择使用的语言按照优先级从高到低的顺序为:简体中文、英文、繁体中文。

系统资源目录的结构中包括:

res/values/dufalt.xml

res/values-zh-rcn/chinese1.xml

res/values-en/englishi.xml

res/values-zh-rtw/chinese2.xml

其中,values目录下存储有系统默认语言字符资源文件dufalt.xml,该文件中有stringa的资源定义:stringa=测试字符。values-zh-rcn目录下存储有简体中文字符资源文件chinese1.xml,该文件中没有stringa的资源定义。values-en目录下存储有英文字符资源文件englishi.xml,该文件中有stringa的资源定义:stringa=teststring。values-zh-rtw目录下存储有繁体中文字符资源文件chinese2.xml,该文件中有stringa的资源定义:stringa=測試字元。

基于上述场景,字符串处理流程可如图2所示,包括:

s201:获取系统中设置的语言列表以及待处理的字符串stringa的标识。

其中,该语言列表中按照优先级从高到低的顺序包括:简体中文、英文、繁体中文。为方便描述,以下将简体中文称为第一语言,将英文称为第二语言,将繁体中文称为第三语言。

s202:获取第一语言的资源目录下的字符资源文件(res/values-zh-rcn/chinese1.xml),查找该文件中stringa的资源定义,若查找到,则转入s209,否则转入s203。

在s209中,根据该字符资源文件得到stringa对应的第一语言字符串资源内容,输出该字符串资源内容。

本例子中,由于chinese1.xml文件中没有stringa的资源定义,因此转入s203。

s203:获取系统默认语言的字符资源文件(res/values/dufalt.xml),并查找该文件中stringa的资源定义,并转入s204。

s204:根据查找到的stringa的资源定义,得到stringa对应的字符串,判断该字符串中是否包含第一语言的字符(即是否包含简体中文字符),若是,则转入s210,否则转入s205。

在s210中,输出得到的stringa对应的字符串资源内容。

该步骤中,可以根据字符的unicade码的取值是否落入简体中文字符的unicade码的取值范围,来判断字符串资源内容中是否包含简体中文字符。

本例子中,dufalt.xml文件中有stringa的资源定义:stringa=测试字符,根据s204可以得到字符串资源内容“测试字符”,经过检测可以判断出该字符串资源内容包含中文简体字符,因此转入s210。

s205:第二语言和第三语言中是否存在与第一语言属于相同国家或地区的语言,若存在,则转入s211,否则转入s206。

在s211中,根据该相同属性的语言的资源定义得到stringa对应的字符串资源内容,输出该字符串资源内容。

其中,繁体中文(第三语言)与简体中文(第一语言)是相同国家或地区的语言。

s206:获取第二语言的资源目录下的字符资源文件(res/values-en/englishi.xml),查找该文件中stringa的资源定义,若查找到,则转入s212,否则转入s207。

在s212中,输出得到的stringa对应的第二语言的字符串资源内容。

s207:获取第三语言的资源目录下的字符资源文件(res/values-zh-rtw/chinese2.xml),查找该文件中stringa的资源定义,若查找到,则转入s213,否则转入s208。

在s213中,输出查找到的stringa对应的第三语言字符串资源内容,输出该字符串资源内容。

s208:获取系统默认语言的字符资源文件(res/values/dufalt.xml),并查找该文件中stringa的资源定义,得到stringa对应的默认语言字符串资源内容,输出该字符串资源内容。

通过图2所示的流程可以看出,在上述场景下,最终输出的字符串为简体中文字符串“测试字符”。而按照现有技术提供的方式,则最终输出的字符串为英文字符串“teststring”。两者比较可以看出,在应用程序支持简体中文,选择使用的语言中包括简体中文且优先级最高,系统默认语言也是简体中文的情况下,最终输出的是简体中文字符串而不是英文字符串,显然采用本申请的上述实施例所得到的结果更为合理。

可以理解的是,本申请实施例为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本申请中所公开的实施例描述的各示例的单元(器、器件)及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的技术方案的范围。

本申请实施例可以根据上述方法示例对执行上述方法的装置进行功能单元(器、器件)的划分,例如,可以对应各个功能划分各个功能单元(器、器件),也可以将两个或两个以上的功能集成在一个处理单元(器、器件)中。上述集成的单元(器、器件)既可以采用硬件的形式实现,也可以采用软件功能单元(器、器件)的形式实现。需要说明的是,本申请实施例中对单元(器、器件)的划分是示意性的,仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用集成的单元(器、器件)的情况下,图3示出了本申请实施例提供的一种字符串处理装置的结构示意图。参阅图3所示,字符串处理装置300包括:获取模块301、处理模块302、输出模块303。

获取模块301用于获取字符串资源标识;处理模块302用于在n个设置使用的语言中最高优先级语言的字符资源中,查找所述字符串资源标识对应的字符串资源内容,若未查找到,则根据系统默认语言的字符资源得到所述字符串资源标识对应的第一字符串资源内容,n为大于1的整数;以及,判断所述第一字符串资源内容中字符的unicode码的取值是否在所述最高优先级语言字符的unicode码取值范围内,若是,则通过输出模块303输出所述第一字符串资源内容;否则,获取所述n个设置使用的语言中与所述最高优先级语言具有相同属性的语言,根据所述具有相同属性的语言的字符资源得到所述字符串资源标识对应的第二字符串资源内容,并通过输出模块303输出所述第二字符串资源内容。输出模块303用于输出字符串资源内容。

可选地,处理模块302还用于:若所述n个设置使用的语言中不存在与所述最高优先级语言具有相同属性的语言,则按照优先级从高到低的顺序,在n-1个设置使用的语言的字符资源中,查找所述字符串资源标识对应的字符串资源内容;其中,所述n-1个设置使用的语言为所述n个设置使用的语言中除最高优先级的语言;以及,通过输出模块303输出所述第三字符串资源内容。

可选地,处理模块302还用于:若按照优先级从高到低的顺序,未在所述n-1个设置使用的语言的字符资源中查找到所述字符串资源标识对应的字符串资源,则根据系统默认语言的字符资源得到所述字符串资源标识对应的第四字符串资源内容,并通过输出模块303输出所述第四字符串资源内容。

图4示出了本申请实施例提供的计算机设备400的结构示意图,即示出了字符串处理装置300的另一结构示意图。参阅图4所示,计算机设备400包括处理器401、网络接口402。其中,处理器401也可以为控制器。所述处理器401被配置为支持字符串处理装置300执行图1或图2中涉及的功能。网络接口402被配置为支持字符串处理装置300收发消息的功能。计算机设备400还可以包括存储器403,存储器403用于与处理器401耦合,其保存该设备必要的程序指令和数据。其中,处理器401、网络接口402和存储器403相连,该存储器403用于存储指令,该处理器401用于执行该存储器403存储的指令,以控制网络接口402收发消息,完成上述方法中字符串处理装置300执行相应功能的步骤。

本申请实施例中,字符串处理装置300以及计算机设备400所涉及的与本申请实施例提供的技术方案相关的概念,解释和详细说明及其他步骤请参见前述方法或其他实施例中关于这些内容的描述,此处不做赘述。

需要说明的是,本申请实施例上述涉及的处理器可以是中央处理器(centralprocessingunit,cpu),通用处理器,数字信号处理器(digitalsignalprocessor,dsp),专用集成电路(application-specificintegratedcircuit,asic),现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。其中,所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。

本申请实施例还提供一种计算机存储介质,用于存储一些指令,这些指令被执行时,可以完成前述字符串处理装置所涉及的任意一种方法。

本申请实施例还提供一种计算机程序产品,用于存储计算机程序,该计算机程序用于执行上述方法实施例中涉及的字符串处理方法。

本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

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