当前位置: 首页 > news >正文

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

总结

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

相关文章:

  • java https 证书_JavaHTTPS客户端证书认证
  • java byte to hex_java 转换byte位hex字符串的工具代码
  • java泛型设计_使用java泛型设计通用方法
  • java线程 数据队列_java多线程从队列中取出数据执行
  • java 给url增加参数_Java给指定URL字符串添加值和获取URL字符串中的参数值
  • java copy object_Java Object 对象拷贝
  • java 几种样式_JAVA几种常见的编码格式
  • mysql5.7解压版停止_MySQL5.7.13解压版安装及常见问题
  • ios java 加密_iOS与Java的RSA加密解密
  • java 动态页面_Java中的动态网页:如何在Java中创建网页?
  • cacti命令行进入mysql_Cacti监控mysql数据库服务器实现过程
  • java webpoi 导出excel 2007_Java POI导入导出Excel文件-excel2007兼容包
  • java编写程序播放音乐_在Java应用程序中播放音乐
  • 将数组倒置java_数组元素倒置-Java
  • java抽象工厂设计模式_JAVA设计模式之【抽象工厂模式】
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • Android交互
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • js 实现textarea输入字数提示
  • Node + FFmpeg 实现Canvas动画导出视频
  • XML已死 ?
  • 安装python包到指定虚拟环境
  • 基于游标的分页接口实现
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 理解在java “”i=i++;”所发生的事情
  • 排序(1):冒泡排序
  • 用Python写一份独特的元宵节祝福
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)Sql Server 保留几位小数的两种做法
  • ***测试-HTTP方法
  • ***通过什么方式***网吧
  • .apk 成为历史!
  • .NET CF命令行调试器MDbg入门(一)
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NetCore项目nginx发布
  • .Net的DataSet直接与SQL2005交互
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [<MySQL优化总结>]
  • [20140403]查询是否产生日志
  • [ACTF2020 新生赛]Upload 1
  • [C#] 我的log4net使用手册
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配
  • [C#]C# winform部署yolov8目标检测的openvino模型
  • [C]整形提升(转载)