我正在尝试解析一个字符串,但我不确定如何解析它,因为它不是一个简单的逗号解析或类似的东西。我拥有的字符串类似于:
String s = "[\"142.5,106.1\",\"142.5,112.1\",\"143.5,119.1\",\"144.5,128.1\",\"146.5,138.1\",\"147.5,148.1\"]";
字符串来自jsonarray,因此格式就是这样,但我的目标是将其解析为列表。所以142.5,106.1是一个点的x,y坐标,依此类推。有人指出我正确的方向吗?感谢。
答案 0 :(得分:2)
您可以简单地使用StringTokenizer(“\”[,]“),然后一次读取两个值(x,y,x,y等)。
答案 1 :(得分:1)
我不知道我是否理解你,但我认为你想念的只是特殊字符逃脱。使用内部双引号时,请使用反斜杠,例如“。”。
答案 2 :(得分:1)
这是我想出的,如果你能清理它,它应该更快。可能更好和其他方法,但我使用拆分来分离所有逗号。所以List按顺序包含它们,即list.get [0]和list.get [1]是一对等等。
public static void main(String [] args){
String s ="[\"142.5,106.1\",\"142.5,112.1\",\"143.5,119.1\",\"144.5,128.1\",\"146.5,138.1\",\"147.5,148.1\"]";
String[] set= s.split(",");
ArrayList<Double> list = new ArrayList<Double>();
for(int i=0; i<set.length;i++){
System.out.println(set[i]);
list.add(Double.parseDouble(set[i].replaceAll("\\[", "").replaceAll("\"", "").replaceAll("\\]", "")));
}
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
答案 3 :(得分:0)
我知道这完全不是你所要求的,但我想在你的任务中讨论正确的方法,而不是回答你立即发布的问题。
如果你收到一对json数组,我们可以假设它的序列化版本就是这样(我在这里猜测,因为我很确定字符串看起来不像你所分享的那样):
"[[123, 234], [234, 456],...]"
如果您使用如此着名的Gson library将此字符串解析为java对象,您可以这样做:
String json = "[[123.3, 234.5], [234.1, 456.5]]";
Gson gson = new Gson();
double [][] points = gson.fromJson(json, double[][].class);
System.out.println(points[1][1]);
这样输出:456.5
就像预期一样,你不需要自己处理解析json。
答案 4 :(得分:0)
如果它始终采用相同的格式,您可以像这样转换它。
String s ="[\"142.5,106.1\",\"142.5,112.1\"]";
s=s.replace("[", "");
s=s.replace("]", "");
String[] ss=s.split("\"");
List list= Arrays.asList(ss);
list.get(0);=142.5,106.1 // so on .....
据我所知,你需要什么。
答案 5 :(得分:0)
一个简单但效率低下的解决方案将使用这样的String方法:
//(being s your example's String)
String[] coordinates = s.substring(2, s.length() - 2).split("\",\"");
//the two at the beginning and end of the substring is to eliminate braces ([]) and the first and last quotes (")
坐标String数组将包含120.1,140.4等数据。