java各种数据截取方式及性能

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
 

猜你喜欢

转载自blog.csdn.net/qq_35824035/article/details/83000927
今日推荐