精华内容
下载资源
问答
  • java切割字符串
    2022-04-11 22:43:48

    中文在不同编码中占用的字节数是不同的,GBK编码中,一个汉字占两个字节,UTF-8编码格式中,一个汉字占3个字节。

    public static List<String> chineseSplitFunction(String src,String byteType, int bytes){        
            if(src == null){            
                return null;            
            }            
            List<String> splitList = new ArrayList<String>();    
            int startIndex = 0;    //字符串截取起始位置            
            int endIndex = bytes > src.length() ? src.length() : bytes;  //字符串截取结束位置             
            try {
                while(startIndex < src.length()){                
                    String subString = src.substring(startIndex,endIndex);                //截取的字符串的字节长度大于需要截取的长度时,说明包含中文字符    
                    //在GBK编码中,一个中文字符占2个字节,UTF-8编码格式,一个中文字符占3个字节。                
                    while (subString.getBytes(byteType).length > bytes) {                    
                        --endIndex;                
                        subString = src.substring(startIndex,endIndex);            
                    }                
                    splitList.add(src.substring(startIndex,endIndex));                
                    startIndex = endIndex;                
                    //判断结束位置时要与字符串长度比较(src.length()),之前与字符串的bytes长度比较了,导致越界异常。        
                    endIndex = (startIndex + bytes) > src.length() ? src.length()  : startIndex+bytes ;        
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }            
            return splitList;        
        }

    public static void main(String[] args) {
            String chineseString = "attr统计时间";    
            List<String> splitStringList = chineseSplitFunction(chineseString,"UTF-8",60);        
            for (String split:splitStringList) {        
                System.out.println(split);    
            }    
        }

    更多相关内容
  • Java分割字符串

    2016-12-12 20:50:29
    Java分割字符串
  • java分割字符串

    2021-05-14 10:40:56
    一.java.lang.String.split() 在java 默认的分隔符是空格("")、制表符(\t)、换行符(\n)、回车符(\r) 示例: for(String revaal:s.split(" ")){//用空格分隔 System.out.println(count+"ci"+revaal); } 或者 ...

    一.java.lang.String.split()

    在java 默认的分隔符是空格("")、制表符(\t)、换行符(\n)、回车符(\r)

    示例

    for(String revaal:s.split(" ")){//用空格分隔
        	System.out.println(count+"ci"+revaal);
              }
    

    或者

    String sourceStr = "1,2,3,4,5";
    String[] sourceStrArray = sourceStr.split(",");
    for (int i = 0; i < sourceStrArray.length; i++) {
        System.out.println(sourceStrArray[i]);
    }
    

    如果需要指定分割后的数量的话,可以在split方法中再传入指定数量即可。

    String[] sourceStrArray = sourceStr.split(",",4);
    

    split 的实现直接调用的 matcher 类的 split 的方法。在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。在正则表达式中有特殊的含义的字符,我们使用的时候必须进行转义,
    1.字符"|","*","+“都得加上转义字符,前面加上”\"。
    2.而如果是"",那么就得写成"\\"。
    3.如果一个字符串中有多个分隔符,可以用"|"作为连字符。

    二.java.util.StringTokenizer()

    StringTokenizer 构造方法

    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 对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。
      示例
     public static void main(String[] args)
        { 
            String str = "runoob,google,taobao,facebook,zhihu";
            // 以 , 号为分隔符来分隔字符串
            StringTokenizer st=new StringTokenizer(str,",");
            while(st.hasMoreTokens()) { 
                System.out.println(st.nextToken());
            }
        }
    

    StringTokenizer 常用方法:

    1. int countTokens():返回nextToken方法被调用的次数。
    2. boolean hasMoreTokens():返回是否还有分隔符。
    3. boolean hasMoreElements():判断枚举 (Enumeration) 对象中是否还有数据。
    4. String nextToken():返回从当前位置到下一个分隔符的字符串。
    5. Object nextElement():返回枚举 (Enumeration) 对象的下一个元素。
    6. String nextToken(String delim):与 4 类似,以指定的分隔符返回结果。
    展开全文
  • java 分割字符串转换成一个数组

    千次阅读 2022-04-24 09:27:04
    } 拓展: String.split 常用于切割字符串,split传入的参数是正则表达式,它的内部是每次都comiple正则表达式,再调用Pattern.split方法 jdk源码: public String[] split(String regex) { return split(regex, 0);...

    例如:String str = “1,2,3,4,5,6,a,b,c”;
    方法一:
    String[] strArr= str.split(“,”);

    方法二:
    使用 StringTokenizer

    String str = "1,2,3,4,5,6,a,b,c";
    StringTokenizer token = new StringTokenizer(str, ",");
    String [] strArr = new String[token.countTokens()];
    int i=0;
    while(token.hasMoreElements()){
    	strArr[i++]=token.nextToken();
    }
    

    关于两者的比较
    String.Split()使用正则表达式,而StringTokenizer的只是使用逐字分裂的字符。

    StringTokenizer在截取字符串中的效率最高.但自己在做测试的时候,分割1两千万以内的字符串,感觉二者时间开销区别不大,甚至 split()花的时间很多时候比StringTokenizer所花的时间还少。但是大于两千万以后,split()方法会执行很长很长时间,甚至上个厕所回来还没执行完。

    以下为测试代码:

    1、使用split()

    StringBuffer sb = new StringBuffer("a");
    for (int i = 0; i < 10000000; i++) {
    	sb.append(",");
    	sb.append("a");
    }
    String str= sb.toString();
    System.out.println(new Date());
    String[] strArr= str.split(",");
    System.out.println(new Date());
    

    控制台打印:

                    Fri Dec 14 11:20:46 CST 2018
                    Fri Dec 14 11:20:49 CST 2018
    

    2、使用StringTokenizer

    StringBuffer sb = new StringBuffer("a");
    for (int i = 0; i < 10000000; i++) {
    	sb.append(",");
    	sb.append("a");
    }
    System.out.println(new Date());
    StringTokenizer to = new StringTokenizer(str,",",true);
    String[] re = new String[to.countTokens()];
    int i=0;
    while(to.hasMoreElements()){
    	re[i++] = to.nextToken();
    }
    System.out.println(new Date());
    

    控制台打印:

            Fri Dec 14 11:19:48 CST 2018
            Fri Dec 14 11:20:04 CST 2018
    

    关于StringTokenizer 介绍
    StringTokenizer是一个用来分隔String的应用类

    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. 方法介绍

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

    例:(注意:StringTokenizer的分隔符不需要使用转义字符)

    
    String str = "a/b;c]d}e*f,g";
    StringTokenizer token = new StringTokenizer(str, "}]/;*,");// 默认不打印分隔符
    // StringTokenizer token=new StringTokenizer(str,"}]/;*,",true);//打印分隔符
    // StringTokenizer token=new StringTokenizer(str,"}]/;*,",false);//不打印分隔符
    while(token.hasMoreTokens()){
        System.out.println(token.nextToken());
    }
    

    拓展:
    String.split 常用于切割字符串,split传入的参数是正则表达式,它的内部是每次都comiple正则表达式,再调用Pattern.split方法
    jdk源码:

    public String[] split(String regex) {
        return split(regex, 0);
    }
     
    public String[] split(String regex, int limit) {
        return Pattern.compile(regex).split(this, limit);
    }
    

    所以:如果调用String.split非常频繁的话,每次都重新编译正则表达式的代价很高,性能会受到很大影响,此时可以预编译Pattern,再调用Pattern.split方法

    
    String str = "1,2,3,4,5,6,a,b,c";
    String[] strArr = str.split(",");
     
    替代为
    Pattern pattern = Pattern.compile(",");
    String[] strArr = pattern.split(str,0);
    
    展开全文
  • 下面小编就为大家带来一篇java 字符串分割的三种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了Java StringUtils字符串分割转数组的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Java 切割字符串的几种方式

    千次阅读 2021-02-27 14:00:10
    按效率排:1、StringTokenizer切割java.util中的一个类...nextToken可以获取它的下一个字符串,其中delim为分隔符。2、..split("*")分割;最方便,运用最多的,不解释。String[] split = data.split("\n");if (sp...

    按效率排:

    1、StringTokenizer切割

    是java.util中的一个类,包含的api有:

    StringTokenizer的方法请参考上一篇。

    其中,countTokens为length;nextToken可以获取它的下一个字符串,其中delim为分隔符。

    2、..split("*")分割;

    最方便,运用最多的,不解释。

    String[] split = data.split("\n");

    if (split != null && split.length != 0) {

    for (int i = 0; i < split.length-1; i++) {

    String[] split1 = split[i].split(":");

    ···

    }

    }

    3、调用String自己的api subString()

    运用2的代码块

    String[] split = data.split("\n");

    if (split != null && split.length != 0) {

    for (int i = 0; i < split.length-1; i++) {

    System.out.println(split[i]);

    String time = split[i].substring(0, 16);//前半部分 16为index

    System.out.println(time);

    String num = split[i].substring(17);//剩余部分 index +2;

    System.out.println(num);

    }

    }

    输出结果:

    2019-01-08 21:55 136

    2019-01-08 21:55

    136

    2019-01-08 22:00 86

    2019-01-08 22:00

    86

    2019-01-08 22:04 136

    2019-01-08 22:04

    136

    2019-01-08 22:09 86

    2019-01-08 22:09

    86

    2019-01-08 22:12 136

    2019-01-08 22:12

    136

    其中上面的split[i].substring(0, 15);15是我字符串我这边功能需要写死了的,你可以通过indexOf(int ch)获取位置。

    4、正则获取时间,然后.replaceAll(String regex,String replacement)那时间用” “代替,剩下的字符串就是时间以外的字符串了。

    实例:

    以下实例使用了 split(string) 方法通过指定分隔符将字符串分割为数组:

    JavaStringSplitEmp.java 文件

    public class JavaStringSplitEmp {

    public static void main(String args[]){

    String str = "www-runoob-com";

    String[] temp;

    String delimeter = "-"; // 指定分割字符

    temp = str.split(delimeter); // 分割字符串

    // 普通 for 循环

    for(int i =0; i < temp.length ; i++){

    System.out.println(temp[i]);

    System.out.println("");

    }

    System.out.println("------java for each循环输出的方法-----");

    String str1 = "www.runoob.com";

    String[] temp1;

    String delimeter1 = "\\."; // 指定分割字符, . 号需要转义

    temp1 = str1.split(delimeter1); // 分割字符串

    for(String x : temp1){

    System.out.println(x);

    System.out.println("");

    }

    }

    }

    以上代码实例输出结果为:

    www

    runoob

    com

    ------java for each循环输出的方法-----

    www

    runoob

    com

    在本例子中用到 String 类的 split 方法,其实在字符串分割时可以调用 StringTokenizer,实例化一个 StringTokenizer 的对象,通过 hasMoreTokens() 与 nextToken()进行判断并打印分割后的子字符串。具体代码如下:

    import java.util.;

    import java.lang.;

    public class Main {

    public static void main(String args[]) {

    String str="www.runoob.com";

    // 实例化对象,并指向以 . 对 str 进行分割

    StringTokenizer str2=new StringTokenizer(str, ".");

    // 对 str2 遍历并打印子字符串;

    while(str2.hasMoreTokens()){

    System.out.println(str2.nextToken());

    }

    }

    }

    输出结果为:

    www

    runoob

    com

    展开全文
  • java字符串分割方法

    万次阅读 2021-11-17 22:37:51
    java 分割字符串split()方法 实现功能 编写一个将字符串分段的类,传入:需分段的字符串 与 字符个数(以此个数进行分段),输出:按指定字符个数进行分段后的若干字符串(汉字算单个字符)。 功能实现要求分析 ...
  • 第一部分 项目+自我介绍 首先上来简单做一下自我介绍? 然后让介绍简历里的项目,说下项目里的难点,技术架构。 ...平时开发过程中都遇到过哪些难题?...第二部分 java基础方面 ...说说java泛型,为什么称java泛型为伪泛
  • Java分割字符串

    2021-02-12 11:00:13
    java.lang.String的split()方法, JDK 1.4 or laterpublicString[]split(Stringregex,int limit)示例代码public class StringSplit {public static void main(String[] args) {String sourceStr = "1,2,3,4,5";...
  • java 分割字符串,匹配多种分隔符

    千次阅读 2022-04-29 11:16:01
    有时候需要用户输入多个值,比如用逗号分割,用户可能用“中文逗号”,也可能用“英文逗号”,这时候后端可以用 str.split("[,,]"),或者 str.split(",|,") public static void main(String[] args) { // 用...
  • java切分字符串的两种方法

    万次阅读 2022-02-18 09:35:36
    java中包含两种切分字符串方式:如下 方法一:通过substring()截取字符串 1. 只传入一个参数 substring(int beginIndex) 传一个参数,含义为将字符串从索引号为beginIndex开始截取,一直到字符串末尾。注意第一个...
  • 主要介绍了Java字符串去重的特性,是Java8中引入的一个新特性,至于是否真的用起来顺手就见仁见智了...需要的朋友可以参考下
  • 主要介绍了Java中使用正则表达式实现字符串匹配,字符串查找,匹配,替换,正则无不能做,特别是灵活的运用子串匹配,感兴趣的小伙伴们可以参考一下
  • jsp截取中文字符串 len为字节长度
  • 字符串以特定符号分割成数组、集合 最后连续 ‘ , ’ 在结尾需要加个空格才能分隔出来,暂时也没研究是为啥。 String ss = ",id,字段,名称,1,2,3,4,,,5,6,,, "; //转数组 String[] cos = ss.split(","); //转list ...
  • 直接上代码: public class Test { /** * 将字符串按照指定长度分割字符串数组 * * @param src * @param length * @return */ public static ...
  • 主要介绍了 Java 分割字符串详解及实例代码的相关资料,需要的朋友可以参考下
  • // String String[] split = cc.getTeacherPosition().split(REGEX); if (!ArrayUtils.isEmpty(split) && split.length > 1) { chaosCourseResponseDto.setTeacherPosition(split[1]);...
  • Java中处理一些路径相关的问题的时候,如要取出ie浏览器上传文件的文件名,由于ie会把整个文件路径都作为文件名上传,需要用java.lang.String中的replaceAll或者split来处理,下面看看使用方法
  • java 分割字符串

    2010-06-18 17:15:16
    java 分割字符串 java 分割字符串
  • Java教程String 类的split() 方法可以按指定的分割符对目标字符串进行分割分割后的内容存放在字符串数组中。该方法主要有如下两种重载形式: str.split(String sign) str.split(String sign,int limit) 其中...
  • 我们在Java中如果用到处理要分隔字符串,不免会用到String的split(String regex)函数,这时候我们要注意的。如果想以回车来分隔字符串,很多同学都会这样做。下面是例子:String[] res = str.split("\n");但是这样...
  • 方法1:采用String的split,验证代码如下:import java.util.Arrays;public class TestSplit {public static void main(String[] args) {String orignString = new String("5,8,7,4,3,9,1");String[] testString = ...
  • java 字符串切割

    千次阅读 2022-06-20 15:42:08
    java 字符串切割

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 164,187
精华内容 65,674
关键字:

java切割字符串