2010-06-08 217 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"} 

但答复仍然是一个字符串。我如何将其转换为字符串数组或数组。

回答

2

没有什么奇怪它是在所有。你已经宣布String reply,所以当然这是一个字符串。将String拆分为String[]的标准方法是使用String.split,但我会认真考虑更改回复字符串的格式,而不是试图找出当前格式的正则表达式,因为它不是那么友好,因为它是。

1

您可能需要更改reply.php的行为,并返回一个字符串而不是数组。

也许像

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

我需要在Java端阵列。我如何获得? – Bruce 2010-06-08 14:48:48

+0

忘记了,就像thetaiko说JSON是你需要的:) – 2010-06-08 14:56:00

8

您可能想尝试在reply.php中返回JSON对象,然后使用JSON库将其导入到Java中。

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

JSON的+1!两种语言都支持库中的标准格式! – polygenelubricants 2010-06-08 14:52:55

1

解析与Java与PHP数组是不干净的解决方案,但我永远无法抗拒好的正则表达式问题。

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]