0

Android version:4.2 私のサンプルコードは次のとおりです。

   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();
}

問題: 変数の desc (つまり、json の説明) が**&nbsp;**内容に含まれています。次のコードを使用して、Android で HTML を文字列に変換しました:

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

それでも交換していません**&nbsp;**。誰でも助けてください。前もって感謝します。

4

6 に答える 6

1
marked_up.toString().replaceAll("&nbsp","");
于 2013-01-09T05:49:02.217 に答える
0

desc= jo.getString("Description");次の行を次のように変更してみてください。

desc= Html.fromHtml(jo.getString("Description"));
于 2013-01-10T05:43:39.940 に答える
0

この方法を使用して、

Html.fromHtml(text);
title+= Html.fromHtml(jo.getString("Title"))+",";
于 2013-01-09T06:46:39.670 に答える
0

tv2.setText(marked_up)の代わりに使用tv2.setText(marked_up.toString(),BufferType.SPANNABLE);

于 2013-01-09T05:51:29.107 に答える
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;
    }

この関数を次のように使用します。text = unescapeHTML(text,0);

于 2013-01-09T06:16:40.140 に答える
-1

毎回別のノードをチェックする必要があるため、サーバー側から  ,<,>を削除する必要があると思います....そのため、webservice のサーバー側コードを変更します...それが最適です...

于 2013-01-09T05:58:09.080 に答える