【Java】在一個字串指定位置插入字串
阿新 • • 發佈:2019-02-06
四、更新
更新時間:2017年12月8日01:51:24
下面的方法有一個問題,是我剛才沒有考慮到的問題,就是下面的方法只適用於一次操作,如果兩次操作會有問題,什麼問題呢,就是你第一次插入之後,Stringbuilder裡面的index就被擾亂了啊,就像一個腦經急轉彎:一個人不能空腹吃兩個香蕉,因為他吃完第一根香蕉的時候,就不是空腹了;
這裡涉及:
①插入後,新舊index衝突問題;
②使用集合,length()或者size()會被index衝破,強行被破壞;
五、策略
所以嘗試了下,採取的解決策略是:
①先查出所有的含有目標的小字串的index,放入List集合中;
②插入的時候,不能從前往後插,選擇從後往前插,這樣就不會耽誤我從前往後數了,就像我想把GODBOK變成GOLDBOSK
這樣,就要在原下標2前面加一個L,原下標5前面加一個S;
但是,如果我先在下標2前面insert插入了一個L,原來的下標順序就會被打亂:
我本來想在2和4前面分別插入L和S的,如果順序插,這樣就不好弄了;如果從前往後數,數到最後一個標記的地方,先插入S,再往前走,這樣,往前走的時候,遇到的還是舊的下標:
六、原始碼
//正文 Element textMain = document.getElementById("contentDiv"); String textMainStr = document.getElementById("contentDiv").toString(); //獲取圖片src所在的位置,然後找到=號後面的index,插入basic Url StringBuilder sb = new StringBuilder (textMainStr);//用來字串操作 List<Integer> indexList = new ArrayList<>();//用來存放下標 //獲取需要插入的下標,先記錄,暫不處理; for (int i=0;i<textMainStr.length();i++){ Integer index=textMainStr.indexOf("src",i); if (-1!=index){ indexList.add(index); i=index; } } //如果有需要處理的,集中處理插入 if (indexList.size()>0) { for (int j = indexList.size() - 1; j >= 0; j--) { sb.insert(indexList.get(j) + 5, OtherSystemBingdingUrl.BASIC_URL);//這裡的5是微調數出來的; System.out.println(sb); } }
一、問題
最近一直在出差,所以部落格斷了這麼多,愧疚愧疚;
最近需要解析一個頁面,然後在手機端展示;因為手機端ionic有個非常牛逼的方法,叫:
<p [innerHtml]="newsDetail.textMain"></p>
就是,如果你的newsDetail物件中的textMain屬性裡存的是帶格式的(帶標籤的)文字,ionic會自動幫你整理,裝飾成帶格式的頁面,分段什麼的都是小意思,非常省事;但是呢,如果,這裡的內容裡面有圖片,就比較麻煩,一般我們網頁端的圖片的src寫的都是訪問地址的後半段,所以直接載入是載入不出來的;
二、方法
所以,我的思路是找到src後面的地址,然後插入前面的basic url;我拿到精確的正文的Element後,確定只有該圖片有src這三個字元;
①先用indexOf獲取src的下標;
②推測(就是數,第三聲)出我要插的下標位置;
③插入網站的basic url,就是入口網站地址;
三、原始碼
具體操作可以看我的截圖,原始碼附在下方,趕時間的朋友可以參考下:
public class TestInsertString {
public static void main(String[] args) {
String s= "<img border=\"0\" src=\"/ewebeditor/uploadfile/20171020084224496.jpg\"></p>";
int index = s.indexOf("src");//獲取src下標,從而找到插入位置
System.out.println(index);//尋找插入位置
StringBuilder sb = new StringBuilder (s);//將String變成StringBuilder,字串可編輯模式
sb.insert(21,"http://www.XXXXX.com");//插入
System.out.println(sb);//檢測是否插入成功
}
}
歡迎關注我的部落格和微信公眾號【幕橋社群】,謝謝~