截取字符串效率比较

结论

最终,StringTokenizer在截取字符串中效率最高,不论数据量大小,几乎持平。substring则要次之,数据量增加耗时也要随之增加。split则是表现最差劲的。

究其原因,split的实现方式是采用正则表达式实现,所以其性能会比较低。至于正则表达式为何低,还未去验证。

http://blog.csdn.net/xiaohai0504/article/details/8027991

 

 

StringTokenizer的简单用法:

1、构造函数。


1. StringTokenizer(String str) :构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘/t’)”、“换行符(‘/n’)”、“回车符(‘/r’)”。
2. StringTokenizer(String str, String delim) :构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符。
3. StringTokenizer(String str, String delim, boolean returnDelims) :构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。



2、方法。
说明:
1. 所有方法均为public;
2. 书写格式:[修饰符] <返回类型> <方法名([参数列表])>

如:
static int parseInt(String s) 表示:此方法(parseInt)为类方法(static),返回类型为(int),方法所需参数为String类型。

1. int countTokens() :返回nextToken方法被调用的次数。如果采用构造函数1和2,返回的就是分隔符数量(例2)。
2. boolean hasMoreTokens() :返回是否还有分隔符。
3. boolean hasMoreElements() :结果同2。
4. String nextToken() :返回从当前位置到下一个分隔符的字符串。
5. Object nextElement() :结果同4。
6. String nextToken(String delim) :与4类似,以指定的分隔符返回结果。

   //例子:
  String s = new String("The Java platform is the ideal platform for network computing");
  StringTokenizer st = new StringTokenizer(s);
  System.out.println( "Token Total: " + st.countTokens() );
  while( st.hasMoreElements() ){
           System.out.println( st.nextToken() );
  }
  //结果为:
  Token Total: 10
  The
  Java
  platform
  is
  the
  ideal
  platform
  for
  network
  computing
  
  
  //例2:
      String s = new String("The=Java=platform=is=the=ideal=platform=for=network=computing");
  StringTokenizer st = new StringTokenizer(s,"=",true);
    System.out.println( "Token Total: " + st.countTokens() );
  while( st.hasMoreElements() ){
           System.out.println( st.nextToken() );
    }
  //结果为:
  Token Total: 19
  The
  =
  Java
  =
  platform
  =
  is
  =
  the
  =
  ideal
  =
  platform
  =
  for
  =
  network
  =
  computing

 

 

subString 简单用法:

str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str;

str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex结束时的字符串,并将其赋值给str;

参数:
beginIndex - 开始处的索引(包括)。
endIndex - 结束处的索引(不包括)。
返回:
指定的子字符串。
抛出:
IndexOutOfBoundsException - 如果 beginIndex 为负,或 endIndex 大于此 String 对象的长度,或 beginIndex 大于 endIndex。

 

split的简单用法:

Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:
java.lang.string.split
split 方法
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
stringObj
必选项。要被分解的 String 对象或文字,该对象不会被split方法修改。
separator
可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。
limit
可选项。该值用来限制返回数组中的元素个数(也就是最多分割成几个数组元素,只有为正数时有影响)
split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解。separator不作为任何数组元素的部分返回。
示例1:
      String str="Java string split test";
      String[] strarray=str.split(" ");
      for (int i = 0; i < strarray.length; i++)
          System.out.println(strarray[i]);
将输出:
Java
string
split
test

示例2:
      String str="Java string split test";
      String[] strarray=str.split(" ",2);//使用limit,最多分割成2个字符串
      for (int i = 0; i < strarray.length; i++)
          System.out.println(strarray[i]);
将输出:
Java
string split test

示例3:
      String str="192.168.0.1";
      String[] strarray=str.split(".");
      for (int i = 0; i < strarray.length; i++)
          System.out.println(strarray[i]);
结果是什么也没输出,将split(".")改为split("//."),将输出正确结果:
192
168
0
1

经验分享:
1、分隔符为“.”(无输出),“|”(不能得到正确结果)转义字符时,“*”,“+”时出错抛出异常,都必须在前面加必须得加"//",如split(//|);
2、如果用"/"作为分隔,就得写成这样:String.split(""),因为在Java中是用"//"来表示"/"的,字符串得写成这样:String Str="a//b//c";
转义字符,必须得加"//";
3、如果在一个字符串中有多个分隔符,可以用"|"作为连字符,比如:String str="Java string-split#test",可以用Str.split(" |-|#")把每个字符串分开;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值