2013-01-09 2 views
0

android version: 4.2 mon exemple de code est:Impossible de remplacer   dans mon application Android

try { 
    //HttpResponse response = httpClient.execute(httpGet, localContext); 
    HttpResponse response = httpClient.execute(httpGet, localContext); 
    HttpEntity entity = response.getEntity(); 
    text = getASCIIContentFromEntity(entity); 

    text=text.replaceAll("&lt;", "<").replace("&gt;", ">").replace("&nbsp;", " "); 

    int start=text.indexOf("<message>"); 
    start=start+9; 
    int end=text.indexOf("</message>"); 
    text=text.substring(start, end); 



    JSONArray ja = new JSONArray(text) ; 
     // ITERATE THROUGH AND RETRIEVE CLUB FIELDS 
    int n = ja.length(); 
    for (int i = 0; i < 1; i++) { 
     // GET INDIVIDUAL JSON OBJECT FROM JSON ARRAY 
    JSONObject jo = ja.getJSONObject(i); 

    title+= jo.getString("Title")+","; 
    url= jo.getString("URL"); 
    desc= jo.getString("Description");        
    } 
} catch (Exception e) { 
     return e.getLocalizedMessage(); 
} 

question: Varible desc (description dans mon JSON) contient **&nbsp;** dans ses contents.I ont converti HTML en chaîne dans Android en utilisant le code suivant:

Spanned marked_up = Html.fromHtml(results); 
tv2.setText(marked_up.toString(),BufferType.SPANNABLE); 

encore, il ne remplace pas le **&nbsp;**. Aidez-moi quelqu'un plz. Merci d'avance.

+0

thats un espace qui doit être préservé? –

Répondre

1
marked_up.toString().replaceAll("&nbsp",""); 
+0

je vous remercie tout le monde pour des réponses rapides.Il a travaillé pour moi. –

+0

@AfeejaShaik: qu'en est-il de ma réponse? l'avez-vous essayé? –

+0

@ ρяσѕρєя K: Thanq je l'ai essayé mais pas travaillé pour moi. –

0

Utilisation tv2.setText(marked_up) au lieu de tv2.setText(marked_up.toString(),BufferType.SPANNABLE);

+0

Spanned sp = jo.getString ("Description"); tv2.setText (sp) cela fonctionnera-t-il aussi? –

+0

Non, 'JSONObject.getString' renvoie' String', pas 'Spanned' –

-1

je pense que vous devriez avoir à retirer & nbsp, <,> du côté serveur parce que vous devez vérifier nœud différent à chaque fois .... donc changer le code côté serveur de webservice ... ce sera mieux pour vous ...

+0

Pourquoi ne peut-il pas faire une chose côté client? – Siddharth

0
public static final String unescapeHTML(String s, int f){ 
     String [][] escape = {{ "&nbsp;" , " " }}; 
     int i, j, k; 

     i = s.indexOf("&", f); 
     if (i > -1) { 
      j = s.indexOf(";" ,i); 
      f = i + 1; 
       if (j > i) { 
        String temp = s.substring(i , j + 1); 
        k = 0; 
        while (k < escape.length) { 
        if (escape[k][0].equals(temp)) break; 
        else k++; 
        } 
        if (k < escape.length) { 
        s = s.substring(0 , i) + escape[k][1] + s.substring(j + 1); 
        return unescapeHTML(s, f); 
        } 
       } 
     } 
     return s; 
    } 

Utilisez cette fonction text = unescapeHTML(text,0);

0

Utilisez cette méthode,

Html.fromHtml(text); 
title+= Html.fromHtml(jo.getString("Title"))+","; 
0

Essayez de changer la ligne suivante desc= jo.getString("Description"); dans ce:

desc= Html.fromHtml(jo.getString("Description")); 
Questions connexes