2010-06-08 9 views
4

Ceci est un problème étrange. Voici mon codeConvertir une chaîne Java en tableau

String reply = listen.executeUrl("http://localhost:8080/JavaBridge/reply.php); 

retourne ExecuteURL comme objet chaîne tout est renvoyé par le fichier reply.php. Maintenant vient le problème. Dans reply.php, je retourne un tableau PHP et reply est une chaîne.

Quand je

System.out.println("Reply = "+reply); 

Je reçois

Reply =  array(2) { [0]=> string(14) "Dushyant Arora" [1]=> string(19 
) "@dushyantarora13 hi"} 

Mais la réponse est encore une chaîne. Comment puis-je le convertir en un tableau de chaînes ou un tableau.

Répondre

2

Il n'y a rien de bizarre du tout. Vous avez déclaré String reply, donc bien sûr c'est une chaîne. La façon standard de diviser un String en String[] est d'utiliser String.split, mais je considérerais sérieusement de changer le format de la chaîne de réponse plutôt que d'essayer de comprendre l'expression rationnelle pour le format actuel, parce que ce n'est pas si convivial que ça .

1

Vous souhaiterez peut-être modifier le comportement de reply.php et renvoyer une chaîne au lieu d'un tableau.

Peut-être quelque chose comme

// ... 
return implode(" ", $your_reply_array) ; 
+0

je besoin d'un tableau sur le côté Java. Comment je reçois ça? – Bruce

+0

Oubliez cela, comme thetaiko dit JSON est ce que vous avez besoin :) –

8

Vous pouvez essayer de renvoyer un objet JSON dans reply.php, puis de l'importer dans Java à l'aide des bibliothèques JSON.

http://www.json.org/java/

reply.php:

<? 
... 
echo json_encode($yourArray); 

Dans votre code Java:

... 
JSONArray reply = new JSONArray(listen.executeUrl("http://localhost:8080/JavaBridge/reply.php")); 
+0

+1 pour JSON! Format standard pris en charge dans les bibliothèques par les deux langues! – polygenelubricants

1

Parsing un tableau PHP avec Java n'est pas la solution la plus propre, mais je ne peux jamais résister à une bon problème de regex.

public static void main(String[] args) { 
    Pattern p = Pattern.compile("\\[\\d+\\]=> string\\(\\d+\\) \"([^\"]*)\""); 
    String input = "  array(2) { [0]=> string(14) \"Dushyant Arora\" [1]=> string(19" + 
      ") \"@dushyantarora13 hi\"}"; 
    ArrayList<String> list = new ArrayList<String>(); 
    Matcher m = p.matcher(input); 
    while (m.find()) { 
     list.add(m.group(1)); 
    } 
    System.out.println(list); 
} 

[Dushyant Arora, @dushyantarora13 hi]

Questions connexes