【好程序员特训营】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方法的问题。是模式匹配的事。
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]);
}
}
}
不做一遍估计我也很难发现。
还有个比较特殊的: 如果用竖线“|”分隔的话,将出现不可得到的结果,必须改为“\\|” 。