1.split()+正则表达式来进行截取。
将正则传入split()。返回的是一个字符串数组类型。不过通过这种方式截取会有很大的性能损耗,因为分析正则非常耗时。
String str = "abc,12,3yy98,0";
String[] strs=str.split(",");
for(int i=0,len=strs.length;i<len;i++){
System.out.println(strs[i].toString());
}
1
2
3
4
5
运行结果:
abc
12
3yy98
0
1
2
3
4
2.通过subString()方法来进行字符串截取。
subString通过不同的参数来提供不同的截取方式
2.1只传一个参数
例如:
String sb = "bbbdsajjds";
sb.substring(2);
1
2
将字符串从索引号为2开始截取,一直到字符串末尾。(索引值从0开始);
2.2传入2个索引值
String sb = "bbbdsajjds";
sb.substring(2, 4);
1
2
从索引号2开始到索引好4结束(并且不包含索引4截取在内,也就是说实际截取的是2和3号字符);
运行结果如下:
bdsajjds
bd
1
2
3.通过StringUtils提供的方法
StringUtils.substringBefore(“dskeabcee”, “e”);
/结果是:dsk/
这里是以第一个”e”,为标准。
StringUtils.substringBeforeLast(“dskeabcee”, “e”)
结果为:dskeabce
这里以最后一个“e”为准。
short类型转换为各个类型
short s = 456;
int changeInt = s;//大类型自动转换
float changeFloat = s;//大类型自动转换
String changeString = String.valueOf(s);//用valueOf转
changeString = "" + s;//用+转
changeString = ((Short)s).toString();//调用封装类型的toString转
byte数组截取当然要提到效率非常高的arraycopy,java中调用方式如下:
System.arraycopy(src, srcPos, dest, destPos, length)
参数解析:
src:byte原来的数组
srcPos:截取原byte数组起始位置(0位置有效)
dest,:byte目的数组(截取后存放的数组)
destPos:截取后存放的数组起始位置(0位置有效)
length:截取的数据长度
由String类型转换为byte[]数组的话想以字符输出方式:
例子:byte[] a{we,er,12,}
String er =new String(a);
system.out.println(er)
这样做的原因是因为由String类型转换为byte[]生成的是ascii码,
所以只要把byte[]强制转换为String类型就行
ws>123456<ws
String类型数据截取
例子如下:
String tt1 = "XY>32ef01020304?7altitude=0,NS=,latty=48?<XY";//声明一个字符串
String wsks11 = "=";//声明要截取的字节标记
int unte1 = tt1.indexOf(wsks11);//得到标记的下标
String sub11 = tt1.substring(unte1 + 1, unte1 + 2);//根据下标得到你想要的值
System.out.println(sub11);
截取某个标识的前段或者后段例子:
String kko = "154.00";
String jje = "8975.23";
String jjh = kko + "," + jje;
String d = jjh.substring(0, jjh.lastIndexOf(","));//截取标识的前段字段
String h = jjh.substring(jjh.indexOf(",") + 1);//截取标识的后段
System.out.println(d);
String str5 = "<abcd efg>higklmnopq<rstu vwxyz";
System.out.println(str5.substring(str5.indexOf(">") + 1, str5.lastIndexOf("<")));//截取标识的中间断
由String类型转换为byte[]的话,String类型里有几个字符byte[]的长度就是几,比如:
String a="12345" 转换为byte[]它的长度就是5 如果以byte[下标] 查看的话他会是ASCII码
int 转String
String qwe = Integer.toString(random1);
String 转int
int i=Integer.parseInt(s1);//注意,如果这段String类型数据里有空格的话就会报错要.trim()然后再去转就OK