java截取字符串中的指定字符的兩種方法(以base64圖片為例)
首先拋出如下問(wèn)題:
前端傳了一個(gè) base64 類(lèi)型的圖片給后端,那么我后端要怎么獲取這個(gè)圖片的類(lèi)型呢?是 image /gif 還是 image/jpeg 亦或是 image/png ?這個(gè)時(shí)候你當(dāng)然可以在后端將 base64 類(lèi)型的圖片轉(zhuǎn)化為 File 類(lèi)型或者 byte 類(lèi)型,然后調(diào)用 java 內(nèi)置的獲取文件類(lèi)型的方法即可,但這不是最簡(jiǎn)便的, 下面介紹簡(jiǎn)單粗暴的方法:利用截取指定字符的方式去獲取圖片類(lèi)型。
假設(shè)前端傳給后端的 base64 字符串為:
data:image/jpeg;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAA=
顯然這個(gè)字符串前半部分已經(jīng)涵蓋了文件類(lèi)型(位于冒號(hào)和分號(hào)之間的部分),我們只需要將其截取出來(lái)即可,代碼如下:
方法一、使用substring索引
String base64File= "data:image/jpeg;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAA="; int beginIndex = base64File.indexOf(":"); //開(kāi)始截取的索引值 System.out.println("開(kāi)始截取的索引值為:" + beginIndex); int endIndex = base64File.indexOf(";"); //結(jié)束截取的索引值 System.out.println("結(jié)束截取的索引值為:" + endIndex); String fileType = base64File.substring(beginIndex + 1, endIndex); //開(kāi)始截取的索引值需加 1 ,因?yàn)?substring 方法取頭不取尾 System.out.println("圖片類(lèi)型為:" + fileType); if(!"image/jpeg".equals(fileType)) { return "圖片類(lèi)型有誤,請(qǐng)重傳!" }
運(yùn)行結(jié)果如下:
注意:上述代碼不可寫(xiě)成如下形式:
String base64File= "data:image/jpeg;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAA="; String fileType = base64File.substring(5, 15); System.out.println("圖片類(lèi)型為:" + fileType);
beginIndex 和 endIndex 不能寫(xiě)死,因?yàn)閳D片類(lèi)型不一定是 10 位的,如果圖片類(lèi)型是 image/png(9位的),那么上述代碼的結(jié)果將是 "image/png;" ,尾巴多了一個(gè)分號(hào)是錯(cuò)誤的。
方法二、使用正則表達(dá)式
String base64File ="data:image/jpeg;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAA="; Pattern pattern = Pattern.compile("(?<=:)[\\s\\S]*(?=;)"); //冒號(hào)和分號(hào)之間的任意字符 Matcher matcher = pattern.matcher(base64File); if(matcher.find()) { System.out.println("截取的字符串為:" + matcher.group()); }
運(yùn)行結(jié)果如下:
到此這篇關(guān)于java截取字符串中的指定字符的兩種方法(以base64圖片為例)的文章就介紹到這了,更多相關(guān)java截取字符串指定字符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 圖片復(fù)制功能實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Java 圖片復(fù)制功能實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10Spring+Vue整合UEditor富文本實(shí)現(xiàn)圖片附件上傳的方法
這篇文章主要介紹了Spring+Vue整合UEditor富文本實(shí)現(xiàn)圖片附件上傳的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Java實(shí)現(xiàn)爬取往期所有雙色球開(kāi)獎(jiǎng)結(jié)果功能示例
這篇文章主要介紹了Java實(shí)現(xiàn)爬取往期所有雙色球開(kāi)獎(jiǎng)結(jié)果功能,涉及Java網(wǎng)頁(yè)抓取、正則替換、文件讀寫(xiě)等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07Java中BufferedReader和BufferedWriter使用方式
這篇文章主要介紹了Java中BufferedReader和BufferedWriter使用方式,F(xiàn)ileWriter?類(lèi)從?OutputStreamWriter?類(lèi)繼承而來(lái),BufferedReader?類(lèi)從字符輸入流中讀取文本并緩沖字符,以便有效地讀取字符,數(shù)組和行2022-06-06淺談java7增強(qiáng)的try語(yǔ)句關(guān)閉資源
下面小編就為大家?guī)?lái)一篇淺談java7增強(qiáng)的try語(yǔ)句關(guān)閉資源。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06