反序列化 Java 数据结构中的文本
Deserialize text in Java data structure
我想eval()
以下文字:
(2, [(3, 4), (5, 6)])
in Java,进入我定义的一些对象,所以我们假设:
new Pair(1, new ArrayList<Pair>({new Pair(3,4), new Pair(5,6)}))
这样实现的策略是什么?这个想法是我可以获得以下任何一项:
(2, [(3, 4), (5, 6), (5, 6)])
(2, [(3, 4), (5, 6)])
(2, [(3, 4)])
是否应该用正则表达式匹配?
这是我的尝试:
/\(([0-9]+), \[(?:\(([0-9]+), ([0-9]+)\)(?:, )?)+\]\)/
您可能正在寻找类似的东西。抱歉,在格式化方面还是有点新。
import javafx.util.Pair;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
String test[] = {"(2, [(3, 4), (5, 6), (5, 6)])",
"(7, [(3, 4), (5, 6)])",
"(10, [(3, 4)])"
};
// clean string
for (int i = 0; i < test.length; i++){
test[i] = test[i].replace("(", "")
.replace("[", "")
.replace(")", "")
.replace("]", "")
.replace(" ", "");
}
List<Pair> pairList = new ArrayList();
for (String s : test){
String[] tmpStrArr = s.split(",");
List<Pair> tmpLst = new ArrayList<Pair>();
int index = Integer.parseInt(tmpStrArr[0]);
for (int i = 1; i < tmpStrArr.length; i += 2){
tmpLst.add(new Pair(index, new Pair(tmpStrArr[i], tmpStrArr[i + 1])));
}
pairList.addAll(tmpLst);
}
// just here for break point
System.out.println();
}
我想eval()
以下文字:
(2, [(3, 4), (5, 6)])
in Java,进入我定义的一些对象,所以我们假设:
new Pair(1, new ArrayList<Pair>({new Pair(3,4), new Pair(5,6)}))
这样实现的策略是什么?这个想法是我可以获得以下任何一项:
(2, [(3, 4), (5, 6), (5, 6)])
(2, [(3, 4), (5, 6)])
(2, [(3, 4)])
是否应该用正则表达式匹配?
这是我的尝试:
/\(([0-9]+), \[(?:\(([0-9]+), ([0-9]+)\)(?:, )?)+\]\)/
您可能正在寻找类似的东西。抱歉,在格式化方面还是有点新。
import javafx.util.Pair;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
String test[] = {"(2, [(3, 4), (5, 6), (5, 6)])",
"(7, [(3, 4), (5, 6)])",
"(10, [(3, 4)])"
};
// clean string
for (int i = 0; i < test.length; i++){
test[i] = test[i].replace("(", "")
.replace("[", "")
.replace(")", "")
.replace("]", "")
.replace(" ", "");
}
List<Pair> pairList = new ArrayList();
for (String s : test){
String[] tmpStrArr = s.split(",");
List<Pair> tmpLst = new ArrayList<Pair>();
int index = Integer.parseInt(tmpStrArr[0]);
for (int i = 1; i < tmpStrArr.length; i += 2){
tmpLst.add(new Pair(index, new Pair(tmpStrArr[i], tmpStrArr[i + 1])));
}
pairList.addAll(tmpLst);
}
// just here for break point
System.out.println();
}