精华内容
下载资源
问答
  • Java字符串分割

    2016-12-06 17:34:05
    Java字符串分割

    一、split()方法

    public String[] split(String regex)  
    public String[] split(String regex,int limit) 
    参数说明:

    regex:用于划分的正则表达式

    limit:参数控制模式应用的次数,影响所得数组的长度。这个值可正可负可为零。limit为正数,表示返回的数组中元素的个数。

    示例:

    package com.learns.string;
    
    import java.util.StringTokenizer;
    
    public class test3 {
    
    	public static void main(String[] args) {
    		
    		String t2 = "a:b:c:d:e:f";
    		String[] split3 = t2.split(":",3);
    		for(String s:split3)
    		{
    			System.out.println(s);
    		}
    	}
    }
    
    结果:

    a
    b
    c:d:e:f

    常用分隔符注意事项:
    1、"|"、"*"、"+" 、"."都必须加上转译字符,即前面加上"\\"。
    2、还有一个更特殊的,如果分隔符是"\",那就必须写成"\\\\"。
    3、如果一个字符串中有多个分隔符,可以用"|"作为连接字符。如: String str = "我#爱-你",则可以写成str.split("#|-")

    二、StringTokenizer

    StringTokenizer是一个用来分割String的应用类。这个类是出于兼容性的原因而被保留的遗留类,所以并不建议使用它,建议使用String类中的split()方法进行字符串切割

    1、构造函数

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

    参数说明:

    str:要分割的String

    delim:分割字符集合

    returnDelims:表示分割符号是否作为标记返回。

    2、常用方法

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

    示例:

    package com.learns.string;
    
    import java.util.StringTokenizer;
    
    public class StringTokenizerTest {
    	public static void main(String[] args) {
    		String s = new String("The Java platform is the ideal platform for network computing");
    		StringTokenizer st = new StringTokenizer(s," ",false);
    		System.out.println( "Token Total: " + st.countTokens() );
    		while( st.hasMoreElements() )
    		{
    			Object str = st.nextElement();
    			System.out.println(str);
    		}
    	}
    }
    
    结果:
    Token Total: 10
    The
    Java
    platform
    is
    the
    ideal
    platform
    for
    network
    computing

    三、区别

    性能比较:

    package com.learns.string;
    
    import java.util.StringTokenizer;
    import java.util.Vector;
    
    public class test {
    
    	public static void main(String[] args) {
    		String str = "abc";
    		StringBuffer buffer = new StringBuffer();
    		
    		for(int i=0;i<1_000_000;i++)
    		{
    			buffer.append(str).append(" ");
    		}
    		
    		str = buffer.toString();
    		
    		// StringTokenizer
    		long curTime = System.currentTimeMillis();
    		StringTokenizer token = new StringTokenizer(str," ");
    		String[] array2 = new String[token.countTokens()];
    		int i=0;
    		while(token.hasMoreTokens())
    		{
    			array2[i++] = token.nextToken();
    		}
    		System.out.println("java.util.StringTokener:"+(System.currentTimeMillis()-curTime));
    		
    		// split方法
    		curTime = System.currentTimeMillis();
    		String[] array = str.split(" ");
    		System.out.println("String.split:" + (System.currentTimeMillis()-curTime));
    		
    		// indexOf方法
    		curTime = System.currentTimeMillis();
    		Vector<String> vector = new Vector<String>();
    		int index = 0;
    		int offset = 0;
    		while((index = str.indexOf(" ",index+1))!=-1)
    		{
    			vector.addElement(str.substring(offset,index));
    			offset = index+1;
    		}
    		String[] array3 = vector.toArray(new String[0]);
    		System.out.println("Vector & indexof:"+(System.currentTimeMillis() - curTime));
    	}
    }
    
    结果:

    java.util.StringTokener:550
    String.split:1052
    Vector & indexof:159

    解释StringTokenizer性能高于split方法,indexof性能最高

    区别1:

    package com.learns.string;
    
    import java.util.StringTokenizer;
    
    public class test3 {
    
    	public static void main(String[] args) {
    		String sample1 = "ben       ben";
    		String[] split1 = sample1.split(" ");
    		StringTokenizer tokens = new StringTokenizer(sample1," ");
    		System.out.println(split1.length + " " + tokens.countTokens());
    	}
    }
    
    结果:

    8 2
    解释:如果用split进行分离的话,他会将空格也作为一个字符串存入数组, 而StringTokenizer不会

    区别2:

    package com.learns.string;
    
    import java.util.StringTokenizer;
    
    public class test3 {
    
    	public static void main(String[] args) {	
    		String t1 = "ben, ,,  ,,,ben";
    		String[] split2 = t1.split(",");
    		StringTokenizer tokens = new StringTokenizer(t1,",");
    		System.out.println(split2.length + " " + tokens.countTokens());
    	}
    }
    
    结果:

    7 4
    解释:StringTokenizer会将连续相同的需要过滤的进行处理


    参考文章:

    http://ben-sin.iteye.com/blog/659611

    https://my.oschina.net/jasonli0102/blog/272061

    http://blog.csdn.net/e_wsq/article/details/32068337


    展开全文
  • java 字符串分割

    2012-10-20 22:40:40
    java 字符串分割 代码 输入一字符串(长度小于100),10个字符一组分割存入新的数组,倒序输出。
  • JAVA 字符串分割

    2020-08-05 11:32:26
    •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到...

    题目描述
    •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
    •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
    输入描述:
    连续输入字符串(输入2次,每个字符串长度小于100)

    输出描述:
    输出到长度为8的新字符串数组

    示例1
    输入
    abc
    123456789
    输出
    abc00000
    12345678
    90000000

    import java.util.*;
    public class Main{
        public static void main(String[] args){
            Scanner scanner = new Scanner(System.in);
            while(scanner.hasNextLine()){
                String input = scanner.nextLine();
                while(input.length() % 8 != 0){
                    input += '0';
                }
                for(int i = 0; i< input.length()/8;i++){
                    System.out.println(input.substring(i*8,(i+1)*8));
                }
            }
        }
    }
    
    展开全文
  • java字符串分割

    2017-09-17 22:18:02
    java中的split函数和js中的split函数不一样。  Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后...将一个字符串分割为子字符串,然后将结果作为字符串数组返回。  stringObj.split([separato
    java中的split函数和js中的split函数不一样。 

    Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项: 
    java.lang.string.split 
    split 方法 
    将一个字符串分割为子字符串,然后将结果作为字符串数组返回。 
    stringObj.split([separator,[limit]]) 免费资源收集网(http://www.freezq.cn) 
    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 



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

    2015-12-07 15:24:51
    Java 字符串分割的几种方法 /** * StringTokenizer 分割 * * @param str * @param split * @param len * 分割后的数组长度 * @return */ private static String[] tokenSplit(String s
    <span style="font-size:18px;"><strong>Java  字符串分割的几种方法</strong></span>
            
            /**
    	 * StringTokenizer 分割
    	 * 
    	 * @param str
    	 * @param split
    	 * @param len
    	 *            分割后的数组长度
    	 * @return
    	 */
    	private static String[] tokenSplit(String str, String split, int len) {
    		String[] arrs = new String[len];
    		StringTokenizer token = new StringTokenizer(str, split);
    		int i = 0;
    		while (token.hasMoreElements()) {
    			arrs[i] = token.nextToken();
    			i++;
    		}
    		return arrs;
    	}
    
    	/**
    	 * 正则表达式 分割
    	 * 
    	 * @param str
    	 * @param split
    	 * @return
    	 */
    	private static String[] pattenrnSplit(String str, String split) {
    		Pattern pat = Pattern.compile(split);
    		String[] split2 = pat.split(str);
    		return split2;
    	}
    
    	/**
    	 * split 分割
    	 * 
    	 * @param str
    	 * @param split
    	 * @return
    	 */
    	private static String[] StringSplit(String str, String split) {
    		String[] strs = str.split(split);
    		return strs;
    	}
    
    	/**
    	 * substring 分割
    	 * 
    	 * @param str
    	 * @param split
    	 * @param splitNum
    	 *            <p>
    	 *            splitNum = split的个数
    	 *            </p>
    	 * @return
    	 */
    	private static String[] subStringSplit(String str, String split,
    			int splitNum) {
    		String[] arrs = new String[splitNum + 1];
    		int index = 0;
    		int k = 0;
    		int i = 0;
    		boolean isStr = true;
    		while (isStr) {
    			if (str.contains(split)) {
    				if (split.equals(str.substring(i, i + 1))) {
    					
    						if (k == 0) {
    							arrs[index] = str.substring(0, i);
    							str = str.substring(i + 1, str.length());
    						} else {
    							arrs[index] = str.substring(0, k);
    							str = str.substring(k + 1, str.length());
    						}
    						index++;
    						k = i;
    						i = 0;
    					
    				}
    			} else {
    				arrs[splitNum] = str;
    				isStr = false;
    			}
    			i++;
    		}
    		return arrs;
    	}

    展开全文
  • 关于字符串分割,我用jdk的split、apache的common的split、正则表达式、StringTokenizerr以及substring做了以下比较,比较的时间为纳秒,用一个字符串“192.168.20.121”作为示例,打印时间为:使用jdk的split切分...
  • 关于字符串分割,我用jdk的split、apache的common的split、正则表达式、StringTokenizerr以及substring做了以下比较,比较的时间为纳秒,用一个字符串“192.168.20.121”作为示例,打印时间为:使用jdk的split切分...
  • JAVA字符串分割

    千次阅读 2012-08-12 14:21:26
    1.用split()方法进行分割分割开的子字符串放入数组,然后进行处理。  示例代码如下:  public class SplitTest {  /**  * @param args  * @author colin  */  public static void main(String[] ...
  • Java字符串分割专题

    2020-03-20 09:26:58
    Java字符串分割专题 str.charAt(i) 提取字符串中第i-1个字符 例程: public class Main{ public static void main(String[] args) { String str = “abcdhg”; System.out.println(str.charAt(3)); } } 分析:str....
  • java字符串分割性能比较 关于字符串的分割,我用jdk的split、apache的common的split、正则表达式、StringTokenizerr以及substring做了以下比较,比较的时间为纳秒,用一个字符串“192.168.20.121”作为示例,打印...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,006
精华内容 1,602
关键字:

java字符串分割

java 订阅