精华内容
下载资源
问答
  • 2022-04-28 23:48:36

    一、split介绍

    split() 方法根据匹配给定的正则表达式来拆分字符串。

    注意: . 、 $、 | 和 * 等转义字符,必须得加 \\。

    注意:多个分隔符,可以用 | 作为连字符。

    语法

    public String[] split(String regex, int limit)

    参数

    • regex -- 正则表达式分隔符。

    • limit -- 分割的份数。

    返回值

    字符串数组。

     二、测试一

    如下示例,猜猜答案吧

        private static void test01() {
            String str1="a";
            String str2="a,b";
            String str3="a,b,";
            String str4="a,b, ";
            String str5=",,,,,,";
            String[] split1 = str1.split(",");
            String[] split2 = str2.split(",");
            String[] split3 = str3.split(",");
            String[] split4 = str4.split(",");
            String[] split5 = str5.split(",");
            System.out.println("str1分割后:"+JSON.toJSONString(split1));
            System.out.println("str2分割后:"+JSON.toJSONString(split2));
            System.out.println("str3分割后:"+JSON.toJSONString(split3));
            System.out.println("str4分割后:"+JSON.toJSONString(split4));
            System.out.println("str5分割后:"+JSON.toJSONString(split5));
        }

    结果

    str1分割后:["a"]
    str2分割后:["a","b"]
    str3分割后:["a","b"]
    str4分割后:["a","b"," "]
    str5分割后:[]

    三、测试二

     private static void test02() {
            String str1="a";
            String str2="a,b";
            String str3="a,b,";
            String str4="a,b, ";
            String str5=",,,,,,";
            String[] split1 = str1.split(",",2);
            String[] split2 = str2.split(",",2);
            String[] split3 = str3.split(",",2);
            String[] split4 = str4.split(",",2);
            String[] split5 = str5.split(",",2);
            System.out.println("str1分割后:"+JSON.toJSONString(split1));
            System.out.println("str2分割后:"+JSON.toJSONString(split2));
            System.out.println("str3分割后:"+JSON.toJSONString(split3));
            System.out.println("str4分割后:"+JSON.toJSONString(split4));
            System.out.println("str5分割后:"+JSON.toJSONString(split5));
        }

    结果 

    str1分割后:["a"]
    str2分割后:["a","b"]
    str3分割后:["a","b,"]
    str4分割后:["a","b, "]
    str5分割后:["",",,,,,"]

    更多相关内容
  • 下面小编就为大家带来一篇java 字符串分割的三种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • java字符串分割方法

    千次阅读 2021-11-17 22:37:51
    java 分割字符串split()方法 实现功能 编写一个将字符串分段的类,传入:需分段的字符串 与 字符个数(以此个数进行分段),输出:按指定字符个数进行分段后的若干字符串(汉字算单个字符)。 功能实现要求分析 ...

    java 分割字符串split()方法

    实现功能
    编写一个将字符串分段的类,传入:需分段的字符串 与 字符个数(以此个数进行分段),输出:按指定字符个数进行分段后的若干字符串(汉字算单个字符)。

    功能实现要求分析

    • 字符串传入
    • 字符串分段
    • 字符串输出

    实现思路

    Java是一个面向对象设计类语言,自身提供了很多方法帮助我们实现想要的功能。
    那么如何实现字符串传入功能?
    我们需要了解一个Java类----Scanner类,这是一个用于扫描输入文本的新的实用程序。自Java 5版本添加了java.util.Scanner类,它是以前的StringTokenizer和Matcher类之间的某种结合。借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器。
    Scanner

    使用Scanner类需导包 import java.util.Scanner;

    上图显示了Scanner的部分使用格式,sc.next后加数据基本类型。

    Scanner s = new Scanner(System.in);
            String n = s.next();
    

    这是传入字符串的实现代码。

    字符串分割

    对字符串进行操作,自然第一个会想到String类有没有相应的方法来实现分割操作,了解过API或者对Java有了解过的首先会想到String类下的split()方法能够实现这个功能。下面来看看split()方法的使用格式。

            String []a=se.split(",");
            String []b=se.split(",",5);
    

    1.se.split(String sign);
    2.se.split(String sign,int limit);

    第一种是以逗号作为标记分割,也就是sign 为自己指定的分割符,sign可以是任意字符串。
    第二种是在第一种的基础上对分割的字符串数量进行限制。

    显而易见,split()方法有些局限,对于原来字符串的内容有要求。
    如:

     String p = "石家庄-武汉-哈尔滨";
            String []g = p.split("-");
            for(String y : g)
                System.out.println(y);
    

    输出结果

    在这段程序中,分割符为“-”,输出结果也确实达到预期,但也不难发现利用split()分割字符串需要内容带分隔符

    所以我们利用这一特点,不难想到可以先对字符串按间距添加分隔符,然后再使用split()方法来实现分割功能。
    理论上使用一个for循环就能实现,但是字符串是常量,一旦创建,其内容和长度是不可以改变的。所以在这里我们要用到String Buffer或者String Builder类,这两个类提供了修改功能,类似一个容器。
    实现代码如下:

     int m=0;
            for(int i=0;i+m<str.length();i++){
                if(i%l==0) {
                    str.insert(i + m, ",");
                    m++;
                }
            }
    

    代码中l是分割的长度,m是添加分隔符后加1的标记

    在这里插入图片描述
    上图清晰地解释了m的作用,实际上就是更新了下一位分割位置,因为在添加分隔符时长度也在增加(更新)。

    使用split()方法
    对原字符串完成分隔符插入后,新字符串已经带有分隔符并且是在预想的位置上,所以理论上我们就可以使用split()方法完成分割字符串。
    代码如下:

     String se= str.toString();
            String []a=se.split(",");
    

    返回成字符串se,将分割后结果存储到字符串数组a[]中,方便输出

    输出分割结果
    代码如下:

     for(String j:a)
                System.out.println(j);
    

    遍历a[],并输出

    完整代码

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            StringBuilder str = new StringBuilder();
            Scanner s = new Scanner(System.in);
            String n = s.next();
            str.append(n);
            Scanner x = new Scanner(System.in);
            int l = x.nextInt();
            int m=0;
            for(int i=0;i+m<str.length();i++){
                if(i%l==0) {
                    str.insert(i + m, ",");
                    m++;
                }
            }
            String se= str.toString();
            String []a=se.split(",");
            for(String j:a)
                System.out.println(j);
        }
    }
    

    运行结果
    在这里插入图片描述
    在这里插入图片描述

    结语
    制作不易,觉得本文有帮助的支持一下!如有其他问题,可直接私信。

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

    Java字符串分割性能比较

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

    • 使用jdk的split切分字符串
      192 168 20 121 花费时间1086171
    • 使用common的split切分字符串
      192 168 20 121 花费时间9583620
    • 使用StringTokenizer的切分字符串
      192 168 20 121 花费时间184380
    • 使用jdk的pattern切分字符串
      192 168 20 121 花费时间222654
    • 使用jdk的substring切分字符串
      192 168 20 121 花费时间157562

    虽然每次打印的时间不太相同,但是基本相差不大。通过以上分析得知使用substring和StringTokenizer的效率相对较高,其它相对较差。

    为什么StringTokenizer的性能相对好些呢?

    通过分析发现StringTokener.hasMoreElement和String.split(String.split是用正则表达式匹配,所以不使用KMP字符串匹配算法)用的都是按顺序遍历的算法,时间复杂度O(m*n),较高。

    不过StringTokener是一边按顺序遍历,一边返回每个分组;而Spring.split是全部分组完成,再返回字符串数组。这个区别不大,但是如果我们不需要全部都分组,只需要某个分组的字符串,那么StringTokener性能会好点。

    apacheJakatar的StringUtils一样用了KMP算法(按序查找字符串,时间是O(m+n)),按理说效率应该最高,但是为啥性能会比较差呢,需要进一步研究。不过有一个优点是如果使用一些转义字符

    如“.”、“|”等不需要加"\",如果使用jdk的split必须加转义。

    附源码:

    String ip ="192.168.20.121";
    
    long st1 = System.nanoTime();  
    String[] ips =ip.split("\\.");  
    System.out.println("使用jdk的split切分字符串");  
    for (int i = 0; i < ips.length; i++) {  
     System.out.print(ips[i]+"  ");  
    }  
    System.out.println("花费时间"+(System.nanoTime()-st1));  
    <script src="https://localhost01.cn/js/jquery-2.0.0.min.js"></script>
    long st2 = System.nanoTime();  
    ips= StringUtils.split(ip,"\\.");  
    System.out.println("使用common的split切分字符串");  
    for (int i = 0; i < ips.length; i++) {  
     System.out.print(ips[i]+"  ");  
    }  
    System.out.println("花费时间"+(System.nanoTime()-st2));  
      
    long st3 = System.nanoTime();  
    System.out.println("使用StringTokenizer的切分字符串");  
    StringTokenizer token=new StringTokenizer(ip,".");  
    while(token.hasMoreElements()){  
     System.out.print(token.nextToken()+"  ");  
    }  
    System.out.println("花费时间"+(System.nanoTime()-st3));  
      
    long st4 = System.nanoTime();  
    Pattern pattern = Pattern.compile("\\.");  
    ips =pattern.split(ip);  
    System.out.println("使用jdk的pattern切分字符串");  
    for (int i = 0; i < ips.length; i++) {  
     System.out.print(ips[i]+"  ");  
    }  
    System.out.println("花费时间"+(System.nanoTime()-st4));  
      
    long st5 = System.nanoTime();  
    System.out.println("使用jdk的indexOf切分字符串");  
    int k=0,count=0;  
    StringBuilder sb = new StringBuilder();  
    for (int i = 0; i < ip.length(); i++) {  
     if(ip.substring(i, i+1).equals(".")){  
      if(count==0){  
       System.out.print(ip.substring(0, i)+"  ");  
      }else if(count==1){  
       System.out.print(ip.substring(k+1, i)+"  ");  
      }else{  
       System.out.print(ip.substring(k+1, i)+"  ");  
       System.out.print(ip.substring(i+1, ip.length())+"  ");  
      }  
      k=i;count++;  
     }  
    }  
    System.out.println("花费时间"+(System.nanoTime()-st5)); 
    

    转自:http://kfyfly.iteye.com/blog/1105716

    展开全文
  • 问题描述:// 把字符串"192.168.1.1"按照小圆点进行分割分割成"192","168","1","1"四个字符串。String preStr = "192.168.1.1";String[] string = preStr.split("."); // 错误写法。这种写法得到的字符串组长度...

    问题描述:

    // 把字符串"192.168.1.1"按照小圆点进行分割,分割成"192","168","1","1"四个字符串。

    String preStr = "192.168.1.1";

    String[] string = preStr.split("."); // 错误写法。这种写法得到的字符串组长度为0

    String[] string = preStr.split("\\."); //正确写法。对小圆点进行转义

    出现上述情况的原因是:split函数会将参数看作是正则表达式进行处理。"."在正则表达式中表示匹配任意一个字符,经过转义之后,"."才是本身的含义,才能得到正确的分割结果。下面主要探讨上述错误写法中得到的字符串组为什么大小为0。

    下面是split函数源代码(java.util.regex.Pattern.split)

    public String[] split(CharSequence input, int limit) {

    int index = 0;

    boolean matchLimited = limit > 0; // 是否限制匹配个数

    ArrayList matchList = new ArrayList(); // 匹配结果队列

    Matcher m = matcher(input); // 待切割字符(串)匹配对象

    // Add segments before each match found

    while (m.find()) {

    // 如果不限制匹配个数 或者 当前结果列表的大小小于limit-1

    if (!matchLimited || matchList.size() < limit - 1) {

    String match = input.subSequence(index, m.start()).toString(); // 取子串,(分隔串所在的首位)

    matchList.add(match); // 添加进结果集

    index = m.end(); // 获取下一个子串的首字符下标

    } else if (matchList.size() == limit - 1) { // last one,即还剩最后一个名额了

    // 最后一个元素从指针取到字符串结尾

    String match = input.subSequence(index, input.length()).toString();

    matchList.add(match);

    index = m.end();

    }

    }

    // If no match was found, return this

    if (index == 0) // 即没有切分到的意思吧,返回整一串

    return new String[] { input.toString() };

    // 如果不限制匹配个数 或者结果集大小小于限制个数

    if (!matchLimited || matchList.size() < limit)

    // 最后一个元素从指针取到字符串结尾

    matchList.add(input.subSequence(index, input.length()).toString()); // Construct

    // result

    int resultSize = matchList.size();

    if (limit == 0)

    // 如果结果集最后的元素是"",一个一个地删除它们

    while (resultSize > 0 && matchList.get(resultSize - 1).equals(""))

    resultSize--;

    String[] result = new String[resultSize];

    return matchList.subList(0, resultSize).toArray(result);

    }

    代码中注释转自https://www.cnblogs.com/xzhang/p/3995464.html

    正则表达式中“.”表示匹配任意一个字符。对于split函数而言,就是就是以任意字符为分隔符进行分割,那么“192.168.1.1”按照任意字符分割等价于“ccccccccccc”按照“c”进行分割,那么分割结果肯定都是空串。split函数中最后的while循环会将分割之后的字符串组,从后往前清理空字符串,所以“.”在不转义的情况下,分割字符串得到的结果为空。

    代码中,Matcher m = matcher(input)中,m记录下每个分隔符的位置。例如“abc;efg;hig”中,分隔符“;”的位置是3,7。m.start()可以获取到第一个分隔符的索引3,利用函数subSequence(int start, int end)进行分割,所以第一个子串传入参数[start = 0,end = 3],m.end()获取当前匹配到的分隔符之后的位置4;m.find()寻找下一个分隔符位置,m.start()为7,第二个字串[start = 4,end = 7];以此类推。

    对于字符串“192.168.1.1”按照“.”进行分割时,分隔符的位置为0,1,2,3,4,...,10,11,每个子串是[0,0],[1,1][2,2],...,[10,10],[11,11]。对于函数subSequence(int start, int end),end==start时返回空串。所以最后得到的结果也是空串。

    以上是一些简单分析,有不对的地方请大家多指教。

    下面附上相关的函数说明,便于大家理解:

    m.start() //Returns the start index of the previous match.

    m.end()   //Returns the offset after the last character matched.

    m.find()  //Attempts to find the next subsequence of the input sequence that matches the pattern

    展开全文
  • java 字符串分割

    2012-10-20 22:40:40
    java 字符串分割 代码 输入一字符串(长度小于100),10个字符一组分割存入新的数组,倒序输出。
  • (1)按指定普通字符分割java代码如下: String string="123@456@789"; String array[]=string.split("@"); //以 @ 分割 for(String s:array) System.out.println(s); 运行结果: 123 ...
  • 主要介绍了Java StringUtils字符串分割转数组的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Java字符串分割函数split

    千次阅读 2018-09-13 14:53:16
    将一个字符串分割为子字符串,然后将结果作为字符串数组返回。 基本格式 :stringObj.split([separator,[limit]])  (1)stringObj  必选项。要被分解的对象即你想要进行操作的字符串,该对象...
  • 主要介绍了Java字符串去重的特性,是Java8中引入的一个新特性,至于是否真的用起来顺手就见仁见智了...需要的朋友可以参考下
  • java字符串分割为数组,数组转List,List转ArrayList等操作学习java字符串分割为数组数组转List集合判断list中是否包含某元素如果List集合包含某元素,则删除该元素 java字符串分割为数组 定义字符串String str = ...
  • Java字符串分割[split()]和截取[substring()]】

    万次阅读 多人点赞 2019-07-15 17:40:21
    最近写代码时遇到自字符串分割和截取的问题,在此总结一下。 字符串的分割: 一般自字符串的分割常用的方法是java.lang包中的String.split()方法,返回是一个字符串数组。 语法: public String[] split...
  • Java字符串分割(转)

    千次阅读 2021-03-01 06:37:02
    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中的字符串分割 .

    千次阅读 2021-03-01 06:38:12
    Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:java.lang.string.splitsplit 方法将一个字符串分割为子字符串,然后将结果作为字符串...
  • jsp截取中文字符串 len为字节长度
  • 今天小编就为大家分享一篇java字符串常用操作方法(查找、截取、分割),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Java的学习中经常会遇到按照自己的理想情况分割字符串,并根据分割后的结果进行后续操作的问题。对于这些问题就可以使用Java提供的split() 方法进而实现,下面详细的介绍它的功能以及使用方法。 一、功能 Java...
  • java字符串分割

    2017-06-16 08:38:08
    使用split()方法可以使字符串按指定的分割字符或字符串对内容进行分割,并将结果存放在字符串数组中。 1、split(String sign):该方法可根据给定的分割字符串进行拆分。 语法:str.split(String sign)其中sign为...
  • java中将字符串分割转为List

    千次阅读 2019-12-02 15:48:46
    String str = "a,b,c,d"; String[] arr = str.split(","); List<String> list = Arrays.asList(str);
  • Java分割字符串

    2022-03-21 16:20:51
    java中按某个标识符分割字符串的方法如下: Scanner scanner = new Scanner(System.in); String source = scanner.next(); String[] sourceArray = source.split("/"); for (int i = 0; i < sourceArray....
  • Java分割字符串的函数是split。  public String[] split(String regex,int limit),用String regex来分割字符串,返回值是字符串数组String word = "小王,小魏,小明,小红"; String[] words = word.split(",");//...
  • Java字符串分割的三种方法

    万次阅读 2015-07-10 21:06:58
    Java中分解字符串
  • java字符串拆分 空字符 介绍 拆分字符串是常见的操作。 本简短的教程将展示一些完成操作的方法。 String.split() 拆分字符串的最常见方法是使用String类中的split()方法。 它根据定界符分割给定的String并...
  • * 使用一个字符串分割另一个字符串 * * @param delimiter 边界上的分隔字符 * @param haystack 输入的字符串 * @param out 输出的字符串指针 * @return 分割成了多少个成员 */ int explode(char *delimiter, ...
  • Java实现split字符串分割方法

    千次阅读 2021-01-20 17:16:35
    实现方法 split, 能够指定分割符将字符串拆分成字符串数组 思路如下: 统计字符串中的目标分割符的个数。 创建字符串数组并将其初始化为 “”,不初始化的话字符串数组中就会是null。 依次截取字符串中分隔符符之前...
  • Java如何实现字符串分割

    千次阅读 2021-04-13 15:52:44
    Java如何实现字符串分割 前言 本章对Java如何实现字符串分割,是基于jDK1.8版本中的String.split()方法。 本文篇幅较长,内容较为复杂涉及到许多小细节,都是我在使用时候以及查阅资料时候遇到的坑,建议反复...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 141,334
精华内容 56,533
关键字:

java字符串分割

java 订阅