2010-12-29 1 views
2

Ich muss diese Funktion für die UNSialisierung eines Wertes in ADODB nach Java portieren.Wie kann ich PHP preg_split nach Java portieren, um einen Wert in ADODB zu deserialisieren?

 $variables = array(); 
     $a = preg_split("/(\w+)\|/", $serialized_string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
     for($i = 0; $i < count($a); $i = $i+2) { 
      $variables[$a[$i]] = unserialize($a[$i+1]); 
     } 

Ich habe eine Bibliothek, die die Werte der PHP-Weg deserialisieren, aber ich brauche Hilfe bei der Portierung preg_split über. Wie würde diese Regex in Java aussehen?

+0

Wir werden einige Beispiele von Ein- und gewünschten Ausgänge benötigen. Es gibt keine einfache Möglichkeit, diesen Code in Java zu übersetzen. Sie müssen wahrscheinlich einen anderen Ansatz wählen, indem Sie 'find()' anstelle von 'split()' verwenden. –

Antwort

1

Equivalent Java-Code:


import java.util.List; 
import java.util.ArrayList; 

// Test 
String serialized_string = "foo|bar|coco123||cool|||"; 

// Split the test 
String[] raw_results=serialized_string.split("\\|");// Trailing empty strings are removed but not internal ones 

// Cleansing of the results 
List<String> php_like_results = new ArrayList<String>(); 
for(String tmp : raw_results) { 
    if (tmp.length()>0) { 
     php_like_results.add(tmp); 
    } 
} 

// Output results 
System.out.println(php_like_results); 

Dies erzeugt: [foo, bar, coco123, cool]

+0

Während dies für das spezifizierte Beispiel in der Frage funktioniert, muss man jedoch vorsichtig sein, da Java keine 'PREG_SPLIT_DELIM_CAPTURE' Option kennt und die Begrenzer nicht erfasst. – kongo09