`

改进后的汉字截取处理程序(含测试用例)

    博客分类:
  • J2SE
J# 
阅读更多
java 代码
  1. package org.danlley.util;   
  2.   
  3. public class StringTools{   
  4.     /**  
  5.      * 说明:如果需要截取的长度大于字符串实际可以被截取的长度,则按实际可截取长度进行截取,  
  6.      *      此时不用考虑汉字问题。如果要截取的长度在实际可截取长度的许可范围内,则需要考虑  
  7.      *      汉字的问题。具体做法是,先把字符串转换成字符数组,然后对每个字符进行判断,如果  
  8.      *      字符所占用的长度是“2”的整数倍,则认为这个字属于非英文字符。  
  9.      * @param str  待处理字符串  
  10.      * @param index  处理的首位置  
  11.      * @param length  长度  
  12.      * @return  
  13.      * @throws java.lang.Exception  
  14.      */  
  15.     public String subString(String str,int index,int length) throws Exception{   
  16.         try{   
  17.             String returnStr=null;   
  18.             byte[] bytes=str.getBytes();   
  19.             int len=bytes.length;   
  20.             boolean lenFlow=((len-index)>length)?(true):(false);   
  21.             if(lenFlow){   
  22.                 String tmpStr;   
  23.                 StringBuffer tmpBfStr=new StringBuffer();   
  24.                 int curlen=0;   
  25.                 int j=0;   
  26.                 while(j<length){   
  27.                     char mychar=str.charAt(j);   
  28.                     tmpStr=String.valueOf(mychar);   
  29.                     if(tmpStr.getBytes().length%2==0){   
  30.                         j+=2;   
  31.                         if(j>length){   
  32.                             break;   
  33.                         }   
  34.                     }else{   
  35.                         j++;   
  36.                     }   
  37.                     tmpBfStr.append(tmpStr);   
  38.                 }   
  39.                 returnStr=tmpBfStr.toString();   
  40.             }else{   
  41.                 returnStr=str.substring(index,str.length());   
  42.             }   
  43.             return returnStr;   
  44.         } catch(Exception e){   
  45.             e.printStackTrace();   
  46.             e.getMessage();   
  47.             throw new Exception(e);   
  48.         }   
  49.     }   
  50.   
  51.     public static void main(String[] args) throws Exception{   
  52.         try{   
  53.             String message="test中dd文dsaf中男大3443n中国43中国人";   
  54.             StringTools stringTools=new StringTools();   
  55.             String str=stringTools.subString(message,0,5);   
  56.             System.out.println(str);   
  57.         } catch(Exception ex){   
  58.             ex.printStackTrace();   
  59.             throw new Exception(ex);   
  60.         }   
  61.     }   
  62. }   
分享到:
评论
2 楼 eideeide 2008-07-04  
如果是中文字符
getBytes("utf-8") 则j要 j+=3
getBytes("gbk") 和 getBytes() 则j要 j+=2
1 楼 eideeide 2008-07-04  
里头有错,要把那行
                   int j=0;   
                while(j<length){   
                    char mychar=str.charAt(j);   
                    tmpStr=String.valueOf(mychar);   
                    if(tmpStr.getBytes().length%2==0){   
                        j+=2;   
                        if(j>length){   
                            break;   
                        }   
                    }else{   
                        j++;   
                    }   
改为:
                   int j=0;  
增加一行:        int k = 0;
                while(j<length){   
                    char mychar=str.charAt(k++);    //改过的地方,把j 改为k++
                    tmpStr=String.valueOf(mychar);   
                    if(tmpStr.getBytes().length%2==0){   
                        j+=2;   
                        if(j>length){   
                            break;   
                        }   
                    }else{   
                        j++;   
                    }   

相关推荐

    手机微信小程序测试用例

    微信小程序系统功能测试用例

    测试用例设计参考文档

    测试用例是一组详细的指令,包括测试输入、执行条件、预期结果,用来验证特定的程序路径或确认某个需求的实现。它不仅包含了测试目标、环境、输入数据、步骤和预期输出,还可能涵盖测试脚本等组成部分。 对于不同...

    测试用例实例(含:功能测试用例、性能测试用例、兼容性测试用例)

    3. **大数据量测试用例**:测试系统处理大数据集时的表现。 4. **疲劳强度测试用例**:长时间高负载运行,观察系统稳定性。 5. **负载测试用例**:模拟不同级别的负载,以评估系统性能。 **案例分析**: 1. **用户...

    测试用例的设计方法

    5. **异常测试用例**:设计测试用例来验证程序在异常情况下的处理能力,如非法输入或资源不足等情况。 6. **性能测试用例**:设计测试用例来评估程序在特定负载下的性能表现。 7. **压力测试用例**:模拟高负载或...

    测试用例内有三个测试用例相关文件

    本压缩包包含三个与测试用例相关的文件,分别以Word和Excel格式提供模板,旨在帮助用户更好地理解和编写测试用例。 1. **测试用例模板.doc**:这是一个Word文档,通常包含了测试用例的基本结构和要素。测试用例模板...

    web系统测试用例

    测试用例模板也可以应用于其他类型的系统测试,例如移动应用程序测试、桌面应用程序测试等。 结论 Web 系统测试用例模板是 Web 系统测试的重要组成部分。测试用例模板可以帮助 testers 更好地理解测试对象,提高...

    华为android系统测试用例

    华为作为Android的重要参与者,其测试用例覆盖了从底层硬件驱动到上层应用程序的各个层面。 二、测试用例设计原则 1. 完备性:测试用例应覆盖所有可能的输入和操作,包括正常情况和异常情况。 2. 明确性:每个测试...

    PL0编译器 VC++开发 含测试用例

    PL0编译器 VC++开发 含测试用例 程序名称:PL0编译器 程序用途:对PL0程序进行词法分析,语法分析,生产中间代码及解释执行。 开发工具:Microsoft Visual C++ 6.0 完成时间:2004年5月

    软件测试用例模版.xls

    软件测试用例模版【仅供参考】软件测试用例模版【仅供参考】软件测试用例模版【仅供参考】软件测试用例模版【仅供参考】软件测试用例模版【仅供参考】软件测试用例模版【仅供参考】软件测试用例模版【仅供参考】软件...

    软件测试用例范文

    软件测试用例设计与实施 软件测试用例是软件测试中最重要的一步,为了确保软件的质量和稳定性,测试用例的设计和实施是至关重要的。本文将对软件测试用例进行详细的解释,并提供实用的测试用例设计和实施方法。 一...

    通用测试用例模板,很适合测试的人

    测试用例模板是软件质量保证过程中的重要工具,它详细定义了如何对软件进行测试,以验证其功能是否符合预期。下面将详细解释这个模板的各个部分及其在测试中的作用。 1. **修订历史记录**:这部分记录了测试用例的...

    测试用例设计:测试用例的基本概念 测试用例的设计和编写 测试用例评估 测试用例的管理

    测试用例设计是软件质量保证的关键环节,它涵盖了测试用例的基本概念、设计与编写、评估以及管理等多个方面。理解并熟练掌握这些知识点对于确保软件产品的质量和稳定性至关重要。 首先,我们要了解测试用例的基本...

    测试用例实例模板 测试用例实例模板

    功能测试用例应当包括测试对象的介绍、测试范围与目的、测试环境与测试辅助工具的描述、测试驱动程序的设计等要素。 六、健壮性测试用例 健壮性测试用例是指对软件系统的健壮性测试,旨在验证软件系统是否能够在...

    测试用例实例++非常详细

    测试用例示例测试用例示例测试用例示例测试用例示例测试用例示例测试用例示例测试用例示例测试用例示例测试用例示例测试用例示例测试用例示例

    学生信息管理系统测试用例

    * 功能测试用例:这是测试用例的核心部分,包括被测试对象的介绍、测试范围与目的、测试环境与测试辅助工具的描述和功能测试用例。 文档介绍的重要性 文档介绍是测试用例的概述部分,它包含了文档目的、文档范围、...

    微信小程序测试实战(用例,接口测试).txt

    这是一套完整的小程序测试课程,从用例编写,功能梳理,业务整理到接口测试的一整套体系结构。课程非常适合测试提高人员,目前在测试小程序人员,提高自己的业务,接口能力,增强个人水平。

    微信小程序官网测试用例小程序+服务器响应php程序

    微信小程序官网测试用例小程序+服务器响应php程序 业务服务器 /data/release/php-weapp-demo 是小程序响应的位置

    网上书店测试用例.doc

    "网上书店测试用例.doc" 通过对网上书店测试用例文档的分析,可以总结出以下知识点: 一、文档介绍 * 文档目的:本文档的目的是为了提供网上书店测试用例,指导测试人员进行测试。 * 文档围:本文档的范围涵盖了...

    华为——测试用例模板

    测试用例是软件开发过程中的重要组成部分,它详细定义了测试步骤、预期结果以及测试条件,确保产品的质量符合预设标准。华为作为全球知名的科技巨头,其在测试领域的实践和模板设计具有高度的专业性和实用性。华为...

Global site tag (gtag.js) - Google Analytics