2013-07-18 44 views
2

我的應用程序是基於客戶端 - 服務器的應用程序,其中我必須在WebView中顯示存儲在SDcard中的圖像。
問題是,這是從服務器端存儲的字符串是這樣的:
如何在Android中替換字符串中的<img>標記的src屬性

"<html><img id=\"MathMLEq1\" style=\"vertical-align: middle;\" src=\"/SOCH/img.PNG\" alt=\"\"/></html>" 

我想那是在src tag已經定義編程就像前值添加一些字符:

"<html><img id=\"MathMLEq1\" style=\"vertical-align: middle;\" src=\"file:///mnt/sdcard/SOCH/img.PNG\" alt=\"\"/></html>" 

任何人可以幫助我通過這個.. ??
在此先感謝..

回答

3
String inputString = "<html><img id=\"MathMLEq1\" style=\"vertical-align: middle;\" src=\"/SOCH/img.PNG\" alt=\"\"/></html>"; 
StringBuffer q= new StringBuffer(inputString); 
String add = "file:///mnt/sdcard"; 
int separatedInd = inputString.indexOf("/SOCH"); //Get the index of occurrence of the folder name in input string, which I assume remains same 
q = q.insert(separatedInd ,add); //Insert your String at that index(before start of /SOCH) 
String result = q.toString(); // Contains the new final string which you require 

更新代碼:

當你評論,你可以在同一個String <img>標籤出現了多次,這裏是更新的代碼替換串在所有需要的地方:

ArrayList<Integer> arrayList = new ArrayList<Integer>(); 
// Assuming three times here 
String inputString = "<html><img id=\"MathMLEq1\" style=\"vertical-align: middle;\" src=\"/SOCH/img.PNG\" alt=\"\"/></html> <html><img id=\"MathMLEq1\" style=\"vertical-align: middle;\" src=\"/SOCH/img.PNG\" alt=\"\"/></html> <html><img id=\"MathMLEq1\" style=\"vertical-align: middle;\" src=\"/SOCH/img.PNG\" alt=\"\"/></html>"; 
StringBuffer q= new StringBuffer(inputString); 
String add = "file:///mnt/sdcard"; 
//Get all indexed of the occurrence of /SOCH string 
for (int index = inputString.indexOf("/SOCH"); 
    index >= 0; 
    index = inputString.indexOf("/SOCH", index + 1)){ 

    arrayList.add(index); //add the indexes to arrayList 
} 
int prev = 0; 
for (int i = 0; i < arrayList.size(); i++){ // for all indexes 
    q = q.insert(prev+ arrayList.get(i),add); //Insert the add string at position (index + (number of times 'add' string appears * length of 'add' string) 
    prev = (i+1)*add.length(); // calculate the next position where to insert the string 

} 
String result = q.toString(); //Gives the final output as desired. 

希望這有助於

+0

好友感謝您的答覆,但我有'在一個字符串 tag'的多發如何使用相同的字符串'「文件:/// MNT/SD卡」全部更換'..? –

+0

是否所有的''標籤中的SOCH文件夾名稱都相同,或者它有所不同? –

+0

沒有朋友,它在所有的'標記'中都保持不變。 –

0

試用JSOUP庫。你可以通過它獲得標籤的屬性,當你得到它時,你只需使用JAVA-替代的方法。請注意java字符串中的特殊字符(如/)。你可以把它寫成像這樣的字符串"\""。閱讀this article關於特殊字符。