首页 > 代码库 > java中字符串切割的方法总结

java中字符串切割的方法总结

StringTokenizer最快 ,基本已经不用了,除非在某些需要效率的场合。
Scanner最慢。 
String和Pattern速度差不多。Pattern稍快些。 String和Pattern的split 方法效率相当,常用

 

  1. public   static   void  main(String [] args){  
  2. long  start = System.currentTimeMillis();  
  3. for ( int  i= 0 ;i< 100000 ;i++){  
  4.         test1();  
  5.     }  
  6. long  end = System.currentTimeMillis();  
  7.     System.out.println("StringTokenzier: " +(end-start));  
  8.     start = System.currentTimeMillis();  
  9. for ( int  i= 0 ;i< 100000 ;i++){  
  10.         test2();  
  11.     }  
  12.     end = System.currentTimeMillis();  
  13.     System.out.println("Scanner: " +(end-start));  
  14.     start = System.currentTimeMillis();  
  15. for ( int  i= 0 ;i< 100000 ;i++){  
  16.         test3();  
  17.     }  
  18.     end = System.currentTimeMillis();  
  19.     System.out.println("String: " +(end-start));  
  20.     start = System.currentTimeMillis();  
  21. for ( int  i= 0 ;i< 100000 ;i++){  
  22.         test4();  
  23.     }  
  24.     end = System.currentTimeMillis();  
  25.     System.out.println("Pattern: " +(end-start));  
  26. }  
  27. //用StringTokenizer   
  28. public   static   void  test1(){  
  29.     String input = "This is 1 just a test" ;  
  30.     StringTokenizer st = new  StringTokenizer(input);  
  31. while (st.hasMoreTokens()){  
  32.         String s = st.nextToken();  
  33.     }  
  34. }  
  35. //用Scanner的方法   
  36. public   static   void  test2(){  
  37.     String input = "This is 1 just a test" ;  
  38.     Scanner scanner = new  Scanner(input);  
  39.     scanner.useDelimiter(" " );  
  40. while (scanner.hasNext()){  
  41.         String s = scanner.next();  
  42.     }  
  43. }  
  44. //用String的split方法   
  45. public   static   void  test3(){  
  46.     String input = "This is 1 just a test" ;  
  47.     String [] str = input.split(" " );  
  48. for ( int  i= 0 ;i<str.length;i++){  
  49.         String s = str[i];  
  50.     }  
  51. }  
  52. //用Pattern的方法   
  53. public   static   void  test4(){  
  54.     Pattern pattern = Pattern.compile(" " );  
  55.     String input = "This is 1 just a test" ;  
  56.     String [] str = pattern.split(input);  
  57. for ( int  i= 0 ;i<str.length;i++){  
  58.         String s = str[i];  
  59.     }  
  60. }  
[java] view plaincopyprint?
 
  1.        public static void main(String [] args){  
  2.     long start = System.currentTimeMillis();  
  3.     for(int i=0;i<100000;i++){  
  4.         test1();  
  5.     }  
  6.     long end = System.currentTimeMillis();  
  7.     System.out.println("StringTokenzier: "+(end-start));  
  8.       
  9.     start = System.currentTimeMillis();  
  10.     for(int i=0;i<100000;i++){  
  11.         test2();  
  12.     }  
  13.     end = System.currentTimeMillis();  
  14.     System.out.println("Scanner: "+(end-start));  
  15.       
  16.     start = System.currentTimeMillis();  
  17.     for(int i=0;i<100000;i++){  
  18.         test3();  
  19.     }  
  20.     end = System.currentTimeMillis();  
  21.     System.out.println("String: "+(end-start));  
  22.       
  23.     start = System.currentTimeMillis();  
  24.     for(int i=0;i<100000;i++){  
  25.         test4();  
  26.     }  
  27.     end = System.currentTimeMillis();  
  28.     System.out.println("Pattern: "+(end-start));  
  29. }  
  30.        //用StringTokenizer  
  31. public static void test1(){  
  32.     String input = "This is 1 just a test";  
  33.     StringTokenizer st = new StringTokenizer(input);  
  34.     while(st.hasMoreTokens()){  
  35.         String s = st.nextToken();  
  36.     }  
  37. }  
  38. //用Scanner的方法  
  39. public static void test2(){  
  40.     String input = "This is 1 just a test";  
  41.     Scanner scanner = new Scanner(input);  
  42.     scanner.useDelimiter(" ");  
  43.     while(scanner.hasNext()){  
  44.         String s = scanner.next();  
  45.     }  
  46. }  
  47. //用String的split方法  
  48. public static void test3(){  
  49.     String input = "This is 1 just a test";  
  50.     String [] str = input.split(" ");  
  51.     for(int i=0;i<str.length;i++){  
  52.         String s = str[i];  
  53.     }  
  54. }  
  55. //用Pattern的方法  
  56. public static void test4(){  
  57.     Pattern pattern = Pattern.compile(" ");  
  58.     String input = "This is 1 just a test";  
  59.     String [] str = pattern.split(input);  
  60.     for(int i=0;i<str.length;i++){  
  61.         String s = str[i];  
  62.     }  
  63. }  


运行了五次。输出结果如下:

Java代码 
  1.  StringTokenzier:  110   
  2. Scanner: 3281   
  3. String: 453   
  4. Pattern: 438   
  5.   
  6. StringTokenzier: 109   
  7. Scanner: 3297   
  8. String: 453   
  9. Pattern: 438   
  10.   
  11. StringTokenzier: 110   
  12. Scanner: 3265   
  13. String: 485   
  14. Pattern: 437   
  15.   
  16. StringTokenzier: 109   
  17. Scanner: 3266   
  18. String: 469   
  19. Pattern: 437   
  20.   
  21. StringTokenzier: 109   
  22. Scanner: 3297   
  23. String: 469   
  24. Pattern: 422   
[java] view plaincopyprint?
 
  1.  StringTokenzier: 110  
  2. Scanner: 3281  
  3. String: 453  
  4. Pattern: 438  
  5.   
  6. StringTokenzier: 109  
  7. Scanner: 3297  
  8. String: 453  
  9. Pattern: 438  
  10.   
  11. StringTokenzier: 110  
  12. Scanner: 3265  
  13. String: 485  
  14. Pattern: 437  
  15.   
  16. StringTokenzier: 109  
  17. Scanner: 3266  
  18. String: 469  
  19. Pattern: 437  
  20.   
  21. StringTokenzier: 109  
  22. Scanner: 3297  
  23. String: 469  
  24. Pattern: 422  


StringTokenizer最快 
Scanner最慢。 
String和Pattern速度差不多。Pattern稍快些。