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

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性能可以提高很多。

 

相关文章:

  • 【推荐系统论文笔记】个性化推荐系统评价方法综述(了解概念——入门篇)...
  • jquery初学之基础回顾
  • GdiPlus[43]: IGPGraphics (二) 关于文本绘制
  • java 非法字符过滤 , 半角/全角替换
  • char *p = abcdefg; p[0] = p[1]出错
  • CentOS项目实例之七--FTP配置
  • ssl https服务 需要 php5.3以上
  • Python-工具安装
  • SQL Server 主动防止阻塞的 1 方法
  • 烂泥:Windows下安装与配置Nginx web服务器
  • Asp.Net+Extjs实现登录
  • 文通移动文字识别采集终端(身份证识别,驾驶证识别,行驶证识别,护照识别,车牌识别)...
  • isFinite()
  • 线性判别分析LDA详解
  • Oracle RAC的日志体系
  • HTTP请求重发
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • js算法-归并排序(merge_sort)
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux CTF 逆向入门
  • ng6--错误信息小结(持续更新)
  • Service Worker
  • Sublime Text 2/3 绑定Eclipse快捷键
  • webpack入门学习手记(二)
  • 学习ES6 变量的解构赋值
  • 一些css基础学习笔记
  • 智能网联汽车信息安全
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • raise 与 raise ... from 的区别
  • 容器镜像
  • 数据库巡检项
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #etcd#安装时出错
  • $.ajax中的eval及dataType
  • (06)金属布线——为半导体注入生命的连接
  • (10)STL算法之搜索(二) 二分查找
  • (JS基础)String 类型
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (南京观海微电子)——I3C协议介绍
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .Net 路由处理厉害了
  • .NET 命令行参数包含应用程序路径吗?
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .net的socket示例
  • .NET中使用Protobuffer 实现序列化和反序列化
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /etc/sudoers (root权限管理)
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • [ C++ ] 继承
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • []Telit UC864E 拨号上网