Java中分割字符串的两种方法实例详解

前言

相信大家应该都知道在java编程中,有时候我们需要把一个字符串按照某个特定字符、字母等作为截点分割这个字符串,这样我们就可以使用这个字符串的一部分或者把所有截取的内容保存到数组里等操作。下面这篇文章就给大家分享了两种分割的方法,下面来一起看看吧。

一、java.lang.String 的 split() 方法, JDK 1.4 or later

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

示例代码

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

输出结果:

1
2
3
4
5
1
2
3,4,5

split 的实现直接调用的 matcher 类的 split 的方法。在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。

在正则表达式中有特殊的含义的字符,我们使用的时候必须进行转义,示例:

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

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 包。

代码示例

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()+" ");
  }

 }
}

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

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

(0)

相关推荐

  • java 中用split分割字符串,最后的空格等不被拆分的方法

    在使用java中的split按照"\t",拆分字符串的时候,发现如果最后的几个字段是空,只是用\t分割,是连着的\t的话,就不会被分割,如 "d\tc\te\t\t\t"最后的几个\t就不会被分割,应该是在拆分之前对字符串进行了处理. 导致的拆分字段个数错误.查了一下APi,需要在split中添加参数-1,String[] values = line.split("\t",-1); imit 参数控制应用模式的次数,从而影响结果数组的长度 如果限

  • java 字符串分割的三种方法(总结)

    最近在项目中遇到一个小问题,一个字符串分割成一个数组,类似String str="aaa,bbb,ccc"; 然后以","为分割符,将其分割成一个数组,用什么方法去实现呢? 第一种方法: 可能一下子就会想到使用split()方法,用split()方法实现是最方便的,但是它的效率比较低 第二种方法: 使用效率较高的StringTokenizer类分割字符串,StringTokenizer类是JDK中提供的专门用来处理字符串分割子串的工具类.它的构造函数如下: publ

  • Java 分割字符串详解及实例代码

     Java 分割字符串 java.lang.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 public class StringSplit { public static void main(String[] args) { String sourceStr = "1,2,3,4,5"; String[] sourceStrArray = sourceSt

  • java用split分割字符串的一个有趣现象

    下面有段代码: String str="1#2#3"; String[] strs=str.split("#"); System.out.println(strs.length); ok,上面这段代码最终输出结果是2,这没有问题,但是如果换成下面的写法呢,请看: String str="##"; String[] strs=str.split("#"); System.out.println(strs.length); 结果输

  • java中简单的截取分割字符串实例

    目前整理出来三种形式: 可根据实际需要选择使用 String userNameUrl; int beginIndex = 0; int endIndex = 0; userNameUrl = "454512@hongri@4944115455d9591b274648a06303d910de"; /** * 方法一: */ beginIndex = userNameUrl.indexOf("@")+1; endIndex = userNameUrl.lastIndex

  • java分割文本字符串的方法

    问题:在项目中,当保存数据超过数据库字段列长度限制时,如何解决? 一种常见的解决办法是:截串存取.顾名思义,就是对大文本数据按指定长度进行截取,返回结果集依截取顺序存储在新表中.并通过在新表中创建一个type字段来标识新表中截取的内容对应旧表中的字段名,而旧表中相应的字段不再直接存放大文本数据,而是存放标识符. 这里,提供一种工具类,用来分割文本字符串,返回List结果集供下一步使用. public class StringUtil { /** * @Name: getContentByList

  • Java中分割字符串的两种方法实例详解

    前言 相信大家应该都知道在java编程中,有时候我们需要把一个字符串按照某个特定字符.字母等作为截点分割这个字符串,这样我们就可以使用这个字符串的一部分或者把所有截取的内容保存到数组里等操作.下面这篇文章就给大家分享了两种分割的方法,下面来一起看看吧. 一.java.lang.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 public class StringSpl

  • IOS自带Email的两种方法实例详解

    IOS自带Email的两种方法实例详解 IOS系统框架提供的两种发送Email的方法:openURL 和 MFMailComposeViewController.借助这两个方法,我们可以轻松的在应用里加入如用户反馈这类需要发送邮件的功能. 1.openURL 使用openURL调用系统邮箱客户端是我们在IOS3.0以下实现发邮件功能的主要手段.我们可以通过设置url里的相关参数来指定邮件的内容,不过其缺点很明显,这样的过程会导致程序暂时退出.下面是使用openURL来发邮件的一个小例子: #pr

  • springboot单元测试两种方法实例详解

    这篇文章主要介绍了springboot单元测试两种方法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 springboot的单元测试,这里介绍两种方式,一种是在测试类中添加注解:另一种是在代码中启动项目的main方法中继承接口(也可以写在其他方法中). 如 对查看数据库的连接池信息 进行单元测试 1. 在类上使用注解: @RunWith(SpringRunner.class) @SpringBootTest @RunWith(Sprin

  • Android判断后台服务是否开启的两种方法实例详解

    Android判断后台服务是否开启的两种方法实例详解 最近项目用到后台上传,就开启了一个服务service. 但是刚开始用这种方法,有些机型不支持:酷派不支持.然后又换了第二种判断方法. // public boolean isServiceWork(Context mContext, String serviceName) { // boolean isWork = false; // ActivityManager myAM = (ActivityManager) mContext // .

  • DWR3 访问WEB元素的两种方法实例详解

    DWR3访问WEB元素主要有两种方法, 第一种是类似于SpringMVC的用法,直接使用,也就是说在需要使用DWR来远程调用的方法上给一个需要用到的WEB元素作为参数,这个参数在调用该方法的时候不需要用户来传递,当调用该方法的时候系统会自动的给该参数赋值,这时候我们就可以在方法体中自由的使用了! 如: public void test(HttpSession session) { System.out.println(session.getId()); } public void test(St

  • java 实现websocket的两种方式实例详解

    一.介绍 1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket 2.tomcat的方式需要tomcat 7.x,JEE7的支持. 3.spring与websocket整合需要spring 4.x,并且使用了socketjs,对不支持websocket的浏览器可以模拟websocket使用 二.方式一:tomcat 使用这种方式无需别的任何配置,只需服务端一个处理类, 服务器端代码 package com.Socket; import java.io

  • python文件读取read及readlines两种方法使用详解

    目录 引言 .read([size])方法 .readlines()方法 引言 with open() as 和open()都是打开,还没有读入文件 假设test.fa的内容如下图所示: ACGACGTAGCGTAGCTACGATCAGCGACGAGCTAGCGACGA .read([size])方法 read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它返回字符串对象. with open('test.fa') as fa: f = fa

  • MySql安装启动两种方法教程详解

    mysql安装启动两种方法如下所示: 方法一(简单版): 1.cmd进入mysql安装的bin目录:mysqld.exe –install 2.net start mysql 服务启动(或者选择计算机->(右键)管理->服务和应用程序->服务->mysql右键启动服务) 3.mysql –uroot –p 回车 4.password留空 回车 方法二: 1.cmd进入到mysql安装目录bin,如:D:\MySQL Server 5.6\bin 2.mysqld --console

  • java 中枚举类enum的values()方法的详解

    java 中枚举类enum的values()方法的详解 前言: 关于枚举,相信使用的已经很普遍了,现在主要写的是枚举中的一个特殊方法,values(), 为什么说特殊呢,因为在Enum 的 API 文档中也找不到这个方法.接下来就看看具体的使用. 理论上此方法可以将枚举类转变为一个枚举类型的数组,因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,我们就可以通过数组的下标,来找到我们需要的枚举类.接下来就展示代码了. 首先是我们自己的枚举类. public e

  • Spring加载properties文件的两种方式实例详解

    在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可,不需要修改源代码,这样更加方便.在Spring中也可以这么做,而且Spring有两种加载properties文件的方式:基于xml方式和基于注解方式.下面分别讨论下这两种方式. 1. 通过xml方式加载properties文件 我们以Spring实例化dataSource为例,我们一般会在beans

随机推荐