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()); }
運行結果:
abc
12
3yy98
0
2.通過subString()方法來進行字符串截取。
subString通過不同的參數來提供不同的截取方式
2.1只傳一個參數
例如:
String sb = "bbbdsajjds";
sb.substring(2);
將字符串從索引號為2開始截取,一直到字符串末尾。(索引值從0開始);
2.2傳入2個索引值
String sb = "bbbdsajjds";
sb.substring(2, 4);
從索引號2開始到索引好4結束(並且不包含索引4截取在內,也就是說實際截取的是2和3號字符);
運行結果如下:
bdsajjds
bd
3.通過StringUtils提供的方法
StringUtils.substringBefore(“dskeabcee”, “e”);
/結果是:dsk/
這里是以第一個”e”,為標准。
StringUtils.substringBeforeLast(“dskeabcee”, “e”)
結果為:dskeabce
這里以最后一個“e”為准。
demo:
String url2 ="http://192.168.123.83:80/test_tape/771/2017090613/20170906161932538841656.V3?AWSAccessKeyId=1VA98MUQO0Y0URCMO99x&Expires=4100688000&signature=mIspd3R076h%2F74iSHRmH5Q%2F2zGw%3D"; String filename="771.1001.xml"; String file= StringUtils.substringBeforeLast(filename, "."); String url=url2.split("\\?")[0].split("\\//")[1]; String key = url.substring(url.indexOf("/", url.indexOf("/") + 1)+1); String name = url.substring(url.lastIndexOf("/")+1); System.out.println("file:"+file); System.out.println("url:"+url); System.out.println("key:"+key); System.out.println("name:"+name);
運行結果:
file:771.1001
url:192.168.123.83:80/test_tape/771/2017090613/20170906161932538841656.V3
key:771/2017090613/20170906161932538841656.V3
name:20170906161932538841656.V3