简体   繁体   中英

Convert Java String to Array

This is a weird problem. Here is my code

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

executeUrl returns as String object whatever is returned by the reply.php file. Now comes the problem. In reply.php I am returning an PHP array and reply is a String.

When I do

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

I get

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

But reply is still a String. How do I convert it into a String array or an Array.

You might want to try returning a JSON object in reply.php and then importing that into Java using the JSON libraries.

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

reply.php:

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

In your Java code:

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

There's nothing weird about it at all. You have declared String reply , so of course it's a string. The standard way of splitting a String into a String[] is to use String.split , but I'd seriously consider changing the format of the reply string rather than trying to figure out the regex for the current format, because it's not all that friendly as it is.

You may want to change the behaviour of reply.php, and return a string instead of an array.

Maybe something like

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

Parsing a PHP array with Java is not the cleanest solution, but I can never resist a good regex problem.

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]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM