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

    2021-04-10 13:53:11
    Java 实例 - 字符串分割以下实例使用了 split(string) 方法通过指定分隔符将字符串分割为数组:JavaStringSplitEmp.java 文件public class JavaStringSplitEmp {public static void main(String args[]){String str ...

    Java 实例 - 字符串分割

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

    JavaStringSplitEmp.java 文件

    public class JavaStringSplitEmp {

    public static void main(String args[]){

    String str = "www-javaidea-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 = "old.javaidea.cn";

    String[] temp1;

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

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

    for(String x : temp1){

    System.out.println(x);

    System.out.println("");

    }

    }

    }

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

    www

    javaidea

    com------javaforeach循环输出的方法-----www

    javaidea

    com

    展开全文
  • 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);
        }
    }
    

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

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

    展开全文
  • 关于字符串分割,我用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切分字符串

    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 

    System.out.print(ips[i]+"  ");

    }

    System.out.println("花费时间"+(System.nanoTime()-st1));

    long st2 = System.nanoTime();

    ips= StringUtils.split(ip,"\\.");

    System.out.println("使用common的split切分字符串");

    for (int i = 0; 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 

    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 

    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));

    }

    展开全文
  • 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.lang.String的split()方法, JDK 1.4 or later

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

    示例代码

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    public class StringSplit {

    public static void main(String[] args) {

    String sourceStr = "1,2,3,4,5";

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

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

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

    }

    // 最多分割出3个字符串

    int maxSplit = 3;

    sourceStrArray = sourceStr.split(",", maxSplit);

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

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

    }

    }

    }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    输出结果:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1

    2

    3

    4

    5

    1

    2

    3,4,5

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    split 的实现直接调用的 matcher 类的 split 的方法。在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。在正则表达式中有特殊的含义的字符,我们使用的时候必须进行转义,示例:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    public class StringSplit {

    public static void main(String[] args) {

    String value = "192.168.128.33";

    // 注意要加\\,要不出不来,yeah

    String[] names = value.split("\\.");

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

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

    }

    }

    }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    split分隔符总结

    1.字符"|","*","+"都得加上转义字符,前面加上"\\"。

    2.而如果是"\",那么就得写成"\\\\"。

    3.如果一个字符串中有多个分隔符,可以用"|"作为连字符。

    比如:String str = "Java string-split#test",可以用Str.split(" |-|#")把每个字符串分开。这样就把字符串分成了3个子字符串。

    java.util.Tokenizer JDK 1.0 or later

    StringTokenizer

    StringTokenizer 类允许应用程序将字符串分解为标记。StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用 String 的 split 方法或 java.util.regex 包。

    代码示例

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    public class StringSplit {

    public static void main(String[] args) {

    String ip = "192.168.128.33";

    StringTokenizer token=new StringTokenizer(ip,".");

    while(token.hasMoreElements()){

    System.out.print(token.nextToken()+" ");

    }

    }

    }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    但是StringTokenizer对于字符串"192.168..33"的分割,返回的字符串数组只有3个元素,对于两个分隔符之间的空字符串会忽略,这个要慎重使用。

    但是String.split(String.split是用正则表达式匹配,所以不使用KMP字符串匹配算法)用的都是按顺序遍历的算法,时间复杂度O(m*n),较高,所以性能上,StringTokenizer好很多,对于频繁使用字符串分割的应用,例如etl数据处理,使用StringTokenizer性能可以提高很多。

    展开全文
  • String类型的对象在用split()方法进行字符分割的时候常常会遇到用特殊字符进行分割的情况,看JDK知道split()实际上是用的正则实现的分割,当遇到一些用特殊字符作为分割标志的时候,不使用特殊手段就会抛出java.util...
  • 问题描述:// 把字符串"192.168.1.1"按照小圆点进行分割分割成"192","168","1","1"四个字符串。String preStr = "192.168.1.1";String[] string = preStr.split("."); // 错误写法。这种写法得到的字符串组长度...
  • java 字符串分割的三种方法(总结)

    千次阅读 2021-02-12 13:14:23
    最近在项目中遇到一个小问题,一个字符串分割成一个数组,类似String str=”aaa,bbb,ccc”; 然后以”,”为分割符,将其分割成一个数组,用什么方法去实现呢?第一种方法:可能一下子就会想到使用split()方法,用...
  • (1)按指定普通字符分割java代码如下: String string="123@456@789"; String array[]=string.split("@"); //以 @ 分割 for(String s:array) System.out.println(s); 运行结果: 123 ...
  • Java中的字符串分割 .

    千次阅读 2021-03-01 06:38:12
    Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:java.lang.string.splitsplit 方法将一个字符串分割为子字符串,然后将结果作为字符串...
  • Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:1.split 方法 将一个字符串分割为子字符串,然后将结果作为字符串数组返回。...
  • 对于面试大厂的朋友,一些建议 阿里 阿里面试官一般都是P7/P8岗,对标到普通互联网公司相当于就是技术专家那种类型!他们对于没有经验的毕业...高扩展、高可用问题,这些你也应该准备好,10%问基础,像spring原理、Java
  • String类型的对象在 用split()方法进行字符分割的时候常常会遇到用特殊字符进行分割的情况,看JDK知道split()实际上是用的正则实现的分割,当遇到一些用特殊 字符作为分割标志的时候,不使用特殊手段就会抛出java....
  • http://www.chenwg.com/java/java-%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%86%E5%89%B2%E4%B8%89%E7%A7%8D%E6%96%B9%E6%B3%95.html最近在项目中遇到一个小问题,一个字符串分割成一个数组,类似String str=”aaa,bbb,ccc...
  • 首先读取XML文件内的某个节点的属性值,这个已经在Java实现——Dom4j读写XML文件中详细介绍过了。那么毋庸置疑第一步就是理清如何将一个文件夹内的全部内容一起复制到指定的新的文件夹下。后面这个FileUtils工具类类...
  • java拆分字符串使用string类的spilt方法,针对某个分隔符来分割一个字符串,示例如下: public class StringSplit { public static void main(String[] args) { String sourceStr = "1,2,3,4,5";//一个字符串 String...
  • Java如何实现字符串分割 前言 本章对Java如何实现字符串分割,是基于jDK1.8版本中的String.split()方法。 本文篇幅较长,内容较为复杂涉及到许多小细节,都是我在使用时候以及查阅资料时候遇到的坑,建议反复...
  • Java分割字符串

    2021-02-12 09:11:45
    java.lang.String的split()方法, JDK 1.4 or laterpublicString[]split(Stringregex,int limit)示例代码public classStringSplit {public static voidmain(String[] args) {String sourceStr= "1,2,3,4,5";...
  • 最近写代码时遇到自字符串分割和截取的问题,在此总结一下。字符串的分割:一般自字符串的分割常用的方法是java.lang包中的String.split()方法,返回是一个字符串数组。语法:public String[] split(String regex, ...
  • 我们在日常开发时会经常遇到将一个字符串按照指定的字符进行分割。这时,我们往往会想到使用str.split(","),进行处理得到分割后的数组。然而, 使用split()方法在分割特殊的字符时是需要转移的。如小数点“.”下面...
  • 字符串以特定符号分割成数组、集合 最后连续 ‘ , ’ 在结尾需要加个空格才能分隔出来,暂时也没研究是为啥。 String ss = ",id,字段,名称,1,2,3,4,,,5,6,,, "; //转数组 String[] cos = ss.split(","); //转list ...
  • 如下所示:public class 字符串常用操作 {public static void main(String[] args) {/** 查找子串*/String str1="dwqae12232aebdalf";//查找指定字符第一次出现的位置int first1=str1.indexOf(97);//参数为字符的...
  • 1.按指定字符分割 1.1 String belongPlace = "北京市,天津市,石家庄市"; String[] placeName = belongPlace.split(","); ... 注:若分隔符为"."或者"|",特殊...2.字符串内容替换 replace、replaceAll和replace...
  • 今天我们来聊一下Java字符串操作及在某些具体方法中与C#的不同,对于需要熟悉多种语言的人来说,作为一种参考。进行诫勉首先,什么是字符串字符串是字符的序列,是作为一种对象而存在。说的直白点,字符串就是...
  • ABOUTYOUpublic static String[] splitPath (String path) { String backslash = ((char)92) + ""; if (path.contains(backslash)) { ArrayList parts = new ArrayList<>(); int start = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 133,461
精华内容 53,384
关键字:

java字符串分割

java 订阅