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

【好程序员特训营】Java字符串截取分割

字符串分割是经常碰到的,下面罗列一下一些常用的方法,测试过的

使用substring:

substring(参数)是java中截取字符串的一个方法
有两种传参方式
一种是public String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
另一种是public String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
下面需要将Ip地址:192.168.0.248分割出数字

public class subString {

	public static void main(String args[]){
		String str1="192.168.0.248";
		String [] str2=new String[4];
		int kk=str1.length();
		int count=0;
		int num=0;
		for(int i=count;i<kk;i++){
			if(str1.substring(i, i+1).equals(".")){
				str2[num]=str1.substring(count, i).trim();
				num++;
				count=i+1;
			}
			else{
				
			}
			str2[str2.length-1]=str1.substring(count, kk).trim();
			
		}
		for(int k=0;k<str2.length;k++){
		System.out.println(str2[k]);
		}
	}
}
<span style="font-size:18px;">输出结果</span>:
<img src="https://img-blog.csdn.net/20141222225649740?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb211emkwODAy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
第二种方法:

使用split方法,这个方法很直接

<pre name="code" class="java">public class subString {

	public static void main(String args[]){
		String str1="192.168.0.248";  
	        String a[] = str1.split(".");  
	        for(int k=0;k<a.length;k++){
	    		System.out.println(a[k]);
	    		}
	}
}

 
使用过split的同学可能直接就这么用了,运行会发现,没有输出结果,为什么呢?我也很郁闷,百度了一下找到了答案: 

String ip = "192.168.0.248";

String[] ips = ip.split(".");// 我们经常用 分号,逗号,顿号以及其他一些符号 都很正常

刚开始以为是split方法对此有特殊要求,小数点有特殊用途,不能作为分隔符。最后查询了下 jdk api才发现不是split方法的问题。是模式匹配的事。

    我们在调用split(".")方法时,程序都会以中间符号作为模式匹配的字符。例如:ip.split(".")时,程序会用“.”在ip中进行匹配。但是在 Pattern 类中方法中,有些符号有特殊定义。例如:小数点“.”代表匹配的是任意字符,而不是小数点了。这些我们在正则表达式中经常遇到。如果想使用小数点 必须加上“\\

String[] ips = ip.split("\\."); 就能达到想要的效果了。以小数点作为分隔符。

那么正确的程序应该是:

<pre name="code" class="java">public class subString {

	public static void main(String args[]){
		String str1="192.168.0.248";  
	        String a[] = str1.split("\\.");  
	        for(int k=0;k<a.length;k++){
	    		System.out.println(a[k]);
	    		}
	}
}

 
不做一遍估计我也很难发现。 

还有个比较特殊的: 如果用竖线“|”分隔的话,将出现不可得到的结果,必须改为“\\|”  。


相关文章:

  • 【好程序员特训营】Java线程同步初探
  • 【好程序员特训营】Java中常用的排序方法
  • 【好程序员特训营】Java中随机数处理
  • 【好程序员特训营】IO常用流的功能及特性
  • 【好程序员特训营】Java类与对象
  • 【好程序员特训营】Java网络连接测试小例子
  • Unity4.6中修改RectTransform的宽度和高度
  • unity3D 动态导入FBX、obj模型
  • UL标签的padding与margin默认值
  • 一个让img居中居左居右的方法
  • 谷歌 CardBoard Unity开发基础
  • Unity使用Face++
  • Processing 用图片填充形状
  • Unity结合讯飞语音在线识别
  • Arduino控制L298N
  • [数据结构]链表的实现在PHP中
  • [译]Python中的类属性与实例属性的区别
  • 《Java编程思想》读书笔记-对象导论
  • 5、React组件事件详解
  • Angular2开发踩坑系列-生产环境编译
  • angular2开源库收集
  • Angular数据绑定机制
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • gcc介绍及安装
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • java多线程
  • JAVA多线程机制解析-volatilesynchronized
  • JS学习笔记——闭包
  • oschina
  • PAT A1092
  • Quartz初级教程
  • React的组件模式
  • 百度小程序遇到的问题
  • 编写高质量JavaScript代码之并发
  • 基于HAProxy的高性能缓存服务器nuster
  • 聊聊flink的BlobWriter
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 异步
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 2017年360最后一道编程题
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​linux启动进程的方式
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (五)Python 垃圾回收机制
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)mysql使用Navicat 导出和导入数据库
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**