知识大全 Java的二个字符串处理方法

Posted 字符

篇首语:厌伴老儒烹瓠叶,强随举子踏槐花。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java的二个字符串处理方法相关的知识,希望对你有一定的参考价值。

Java的二个字符串处理方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  以下是测试程序运行结果

  source = a b c d e f g h i j k l m n o p q r s t u v w x y z

  字符串中删除字符的方法

  系统函数计算 次用时 ms

  自定义方法计算 次用时 ms

  生成 abcdefghijklmnopqrstuvwxyz

  

  字符串按字符分割的方法

  系统函数计算 次用时 ms

  自定义方法计算 次用时 ms

  生成 [Ljava lang String;@ : [a b c d e f g h i j k l m n o p q r s t u v w x y z]

  

  能够数倍超越爪哇(Java)类库(Java 和Java )中相关方法的性能 究其原因 是因为类库为通用性 提供的相关方法 都采取了正则表达式参数 虽然编译过的正则表达式很高效 但毕竟无法和字符相等这种单拍操作相提并论

  下面把程序发出来 供大家指出错误 讨论以及参考

  首先是删除字符串中某字符的方法

   /**

   * <b>字符串删除其中某字符</b><br/>

   * 本方法用来移除指定字符串中的指定字符

   * 在 Java 以内 删除字符串中的指定字符 需要通过

   * @link String#replace(CharSequence CharSequence) replace 方法 将指定单

   * 字符的字符串 替换成空字符串来实现 而 <code>replace</code> 方法为了追求通用

   * 使用了正则表达式参数 即便是编译过的正则表达式 其性能也无法与简单的字符相等

   * 判断相提并论 <br/>

   * 本方法不涉及正则表达式 通过遍历原字符串对应的字符数组来寻找符合待删除字符的

   * 字符 然后通过 @link StringBuilder 来追加其余字符 这是一个简单但高效的方法

   * <br/>

   * 本方法编写之初 曾试图通过 <code>StringBuilder</code> 的功能来直接删除字符串

   * 中待删除字符 后经 网站用户 shenyuc 提示 并经过考证 发现

   * @link StringBuilder#deleteCharAt(int) deleteCharAt 方法并不高效 应该是

   * 因为其内部每次删除都进行了数组迁移 遂改为追加方式 效率提高了 倍多 <br/>>>

   * 本方法使用示例如下

   * <pre>

   * String source = a b c d e f g h i j k l m n o p q r s t u v w x y z ;

   * String removed = StringTool removeChar(source );</pre>

   * 此示例中 @link String source 为原字符串 String removed 为删除空格后的

   * 结果

   * @see     String#replace(CharSequence CharSequence)

   * @see     StringBuilder#append(char)

   * @param   source  待被处理的字符串 即本方法的 原字符串

   * @param   target  需要从原字符串中移除的字符

   * @return      从指定原字符串中移除指定字符后所得的结果字符串

   * @exception   NullPointerException    当传入参数 source 为空时

   */

   static public String removeChar(String source char target)

  

       StringBuilder builder = new StringBuilder();

       for (char c: source toCharArray())

           if (c != target) builder append(c);

       return builder toString();

  

  接下来 是字符串分割的方法

   /**

   * <b>简易字符串分割</b><br/>

   * 本方法用来根据指定字符 将某字符串以此为分割 拆分成多个子字符串

   * 对于分割字符串功能 在 Java 以内 都只提供了支持正则表达式的

   * @link String#split(String) split 方法 此方法为追求通用 即便是简单的

   * 分割 也会基于正则表达式来进行 即便是编译过的正则表达式 其性能也无法与简单

   * 的字符相等判断相提并论 <br/>

   * 本方法不涉及正则表达式 通过遍历原字符串对应的字符数组来寻找符合分割字符的

   * 字符 然后通过 @link String#substring(int int) 来获取每一个分割字符之间

   * 的子字符串 存入一个 @link LinkedList 中 这是一个功能简单但高效的方法

   * 如果规模比较大 拟考虑先通过一次循环 取得原字符串中分割字符的数量 以此制作

   * 定长的 @link ArrayList

   * 本方法尤其适用于常见的由半角逗号结合在一起的字符串的分割 <br/>

   * 在编写之初 本方法曾采取将字符串的字符数组分段处理 通过系统字符串复制来形成

   * 一个个子字符串 后经考证 @link String#substring(int int) 是一个很高效的

   * 方法 遂改 效率提高了一倍

   * 本方法使用示例如下

   * <pre>

   * String source = a b c d e f g h i j k l m n o p q r s t u v w x y z ;

   * List<String> secs = StringTool splitSimpleString(source );</pre>

   * 此示例中 @link String source 为原字符串 @link List secs 为删除空格后

   * 的结果

   * @see     String#split(String)

   * @see     String#substring(int int)

   * @param   source  待被处理的字符串 即本方法的 原字符串

   * @param   gap     分割字符

   * @return      从指定原字符按分割字符拆分成的子字符串列表

   * @exception   NullPointerException    当传入参数 source 为空时

   */

   static public List<String> splitSimpleString(String source char gap)

  

       List<String> result = new LinkedList<String>();

       char[] sourceChars = source toCharArray();

       String section = null;

       int startIndex = ;

       for (int index = ; ++index != sourceChars length; )

      

           if (sourceChars[index] != gap) continue;

           section = source substring(startIndex index);

           result add(section);

           startIndex = index + ;

      

       section = source substring(startIndex sourceChars length);

       result add(section);

       return result;

  

  最后是测试程序

   static public void main(String[] arguments)

  

       // 准备测试内容

       String source = a b c d e f g h i j k l m n o p q r s t u v w x y z ;

       System out println( source = + source);

       int loop = ;

       String resultString = null;

       List<String> resultList = null;

       String[] resultArr = null;

       int index = ;

  

       long start = Calendar getInstance() getTimeInMillis();

       System out println( 字符串中删除字符的方法 );

  

       // 测试 Java 类库提供的字符串删除某字符

       index = ;

       while (++index != loop)

           resultString = source replace( );

       long end = Calendar getInstance() getTimeInMillis();

       System out println( 系统函数计算 + loop + 次用时 + (end start) + ms );

  

       // 测试自定义的字符串删除某字符

       index = ;

       while (++index != loop)

           resultString = StringTool removeChar(source );

       long end = Calendar getInstance() getTimeInMillis();

       System out println( 自定义方法计算 + loop + 次用时 + (end end ) + ms );

  

       System out println( 生成 + resultString + );

       System out println( \\n );

  

       // 测试 Java 类库提供的字符串按某字符分割

       System out println( 字符串按字符分割的方法 );

       index = ;

       while (++index != loop) resultArr = source split( );

       long end = Calendar getInstance() getTimeInMillis();

       System out println( 系统函数计算 + loop + 次用时 + (end end ) + ms );

  

       // 测试自定义的字符串按某字符分割

       index = ;

       while (++index != loop)

           resultList = StringTool splitSimpleString(source );

       long end = Calendar getInstance() getTimeInMillis();

       System out println( 自定义方法计算 + loop + 次用时 + (end end ) + ms );

  

       System out println( 生成 + resultArr + : + resultList + );

       System out println( \\n );

cha138/Article/program/Java/hx/201311/27117

相关参考

知识大全 Java精确截取字符串

Java精确截取字符串  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java精确截取字符串取得

知识大全 java字符串加密解密

  java字符串加密解密  tryStringtest=EncryptionDecryptiondes=newEncryptionDecryption(tourhb)//自定义密钥Systemout

知识大全 Ruby能否成为第二个Java

Ruby能否成为第二个Java?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一直以来Ruby

知识大全 Java的字符串函数集锦

Java的字符串函数集锦  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!cha138/Ar

知识大全 Java字符串比较注意点

Java字符串比较注意点  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  熟悉C++的人对于两个字

知识大全 java 字符串相减(很简单的一个方法)

本篇文章是对java中关于字符串相减的一个简单的方法进行了介绍需要的朋友参考下   有个比较简单的方法复制代码代码如下:cha138/Article/program/Java/JS

知识大全 Java循环与字符串代码优化

Java循环与字符串代码优化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在系统性能优化的时候

知识大全 JAVA中去掉字符串空格各种方法

JAVA中去掉字符串空格各种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Stringtr

知识大全 java获得字符串间运算符变量的值

cha138/Article/program/Java/JSP/201311/20012

知识大全 java唯一的字符串生成器

  publicclassUniqueStringGenerator    privateUniqueStringGenerator()      publicstaticsynchronizedSt