2010-06-08 5 views
4

Это странная проблема. Вот мой кодПреобразование строки Java в массив

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

ExecuteURL возвращает в качестве строкового объекта все, что возвращаемый файл reply.php. Теперь проблема. В reply.php я возвращаю массив PHP, и ответ - это String.

Когда я

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

Я получаю

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

Но ответ еще строки. Как преобразовать его в массив String или Array.

ответ

2

Там нет ничего странного об этом вообще. Вы объявили String reply, поэтому, конечно, это строка. Стандартный способ разделения String на String[] - использовать String.split, но я бы серьезно подумал об изменении формата строки ответа, вместо того, чтобы пытаться выяснить регулярное выражение для текущего формата, потому что это не совсем так, как это ,

1

Возможно, вы захотите изменить поведение reply.php и вернуть строку вместо массива.

Может быть что-то вроде

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

мне нужен массив на Java стороне. Как мне это получить? – Bruce

+0

Забудьте, что, как сказал thetaiko, JSON - это то, что вам нужно :) –

8

Возможно, вы захотите попробовать вернуть объект JSON в файл reply.php, а затем импортировать его в Java, используя библиотеки JSON.

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

reply.php:

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

В коде Java:

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

+1 для JSON! Стандартный формат, поддерживаемый в библиотеках на обоих языках! – polygenelubricants

1

разборе PHP массив с Java не является чистым решением, но я никогда не может сопротивляться хорошая проблема с регулярным выражением.

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]

Смежные вопросы