2017-10-06 2 views
2

Je parsé ces données de Wikipedia et essayer d'obtenir que des caractères d'ici. Mais le résultat vient avec \n* dans le front des données.Comment diviser des données de chaîne analysées sans caractères spéciaux?

"": « === type de chat === \ n [[Siamois]] \ n * [[Persian Neve Ska Nuit]] \ n * [[persan]] \ n * [[Norvège jieon Forêt]] \ n * [[Angora turc]] \ n * [[American Shorthair]] \ n * [[British Shorthair]] \ n * [[bleu russe]] \ n * [[Bengal]] \ n * [[Maine Coon]] \ n * [[raekdol]] \ n * [[Himalaya]] \ n * [[jaepaenijeu Bobtail]] \ n * [[Oriental cheveux courts]] \ n * [[Peter gras]] \ n * [[Scottish fold]] \ n * Scottish straight \ n * [[Highland fold]] \ n * [[Forêt de Sibérie]] \ n * [ [Turquie van City]] \ n * [[Shorthair coréen]] \ n * [[All Blacks]] \ n * [[quatre Nakaet]] \ n * [[kuna]] \ n * [[Abyssin]] \ n * Munchkin «

Ceci est mon code.

try { 
     URL url = new URL("https://ko.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=20&titles=%EA%B3%A0%EC%96%91%EC%9D%B4&format=json"); 
     URLConnection con = url.openConnection(); 
     InputStream is = con.getInputStream(); 
     InputStreamReader isr = new InputStreamReader(is); 
     BufferedReader reader = new BufferedReader(isr); 

     while(true){ 
      String data = reader.readLine(); 
      if(data == null) break; 
      result += data; 
     } 
     JSONObject obj = new JSONObject(result); 
     JSONObject query = (JSONObject) obj.get("query"); 
     JSONObject pages = (JSONObject) query.get("pages"); 
     JSONObject pageid = (JSONObject) pages.get("93349"); 
     JSONArray revisions = (JSONArray) pageid.get("revisions"); 
     String catcat = String.valueOf(revisions); 
     String star = "\n*"; 
     catcat = catcat.replaceAll("\\[\\[","").replaceAll("\\]\\]",",").replaceAll("\\r|\\n", "").replaceAll(star,""); 
     String[] catcategory = catcat.split(","); 


     for (int i = 0; i<catcategory.length;i++){ 
      list.add(catcategory[i]); 

     } 






    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

Résultat cela ressemble

\ n chat siamois
\ n
persan

et je veux supprimer \n*.

+1

Utiliser 'text.replaceAll ("\ n *", " ");' –

+1

ajouter un \ 'dans String de star =" \\ n \ *";' –

+0

j'ai essayé. ça ne marche pas. Essayez – coooldoggy

Répondre

0

Comment diviser les données analysables de chaîne sans caractères spéciaux?

Essayez ce morceau de code, il est retiré \ n *, vous pouvez ensuite ajouter _result_word à votre liste.

for (int i = 0; i < catcategory.length; i++) { 
      try { 
       String _result_word = catcategory[i].replaceFirst("\\\\n", "").replace("*", ""); 
       //String _result_word=catcategory[i].replaceFirst("\\\\n", "").replace("*", "").replaceFirst("\\\\n", "").replace("*", ""); 
       System.out.println("" + _result_word); 
       list.add(_result_word); 
      } catch (Exception ex) { 
       System.out.println("Special Exception occurred at index : i = " + i); 
       ex.printStackTrace(); 
      } 
     } 
+0

Vous pouvez également utiliser: String = _result_word catcategory [i] .replaceFirst ("\\\\ n", "") .replace ("*", "") .replaceFirst (« \ \\\ n "," ") .replace (" * "," "); –

+0

Merci! Cela a fonctionné! Si vous le pouvez, pouvez-vous expliquer comment cela a fonctionné? – coooldoggy

0

Tout correct, sauf une ligne où vous devez échapper à caractère astérisque et échapper à caractère slash

String star = "\\\\n\\*"; 
str.replaceAll(star, ""); 
+0

@Sanoop non, c'est la bonne réponse. Code Topicstarter fonctionne correctement avec mon fix – Romadro