我设法从请求中获取 json 响应,并将其转换为字符串,例如:
String response = client.execute(get, handler);
响应类似于:
"geometry":{"rings":[[[29470.26099999994,40220.076999999583],[29551.560999999754,40324.093000000343],[29597.470999999903,40391.253000000492],[29619.849999999627,40434.842000000179],[29641.708999999799,40471.713999999687],[29701.501000000164,40574.616000000387],[29722.775999999605,40611.230000000447],[29723.673000000417,40613.234999999404]]]}
但我想让它看起来像下面这样:
"Coordinates":"29470.26099999994|40220.076999999583,29551.560999999754|40324.093000000343,29597.470999999903|40391.253000000492,45360.235000003|41478.4790000003,45360.2369999997|41478.4729999993,45353.8320000004|41470.7339999992,45372.21|41468.057,45371.8090000004|41467.1390000004"
总之,我想更改 [ ] 中两个坐标之间的逗号,设置为用管道“|”分隔代替逗号并用 , 代替“],[”分隔一组两个坐标
我尝试过:
response = response.replace("],[","\,");
response = response.replace("[[[","\"");
response = response.replace("]]]","\"");
但是它没有给我我想要的东西...因为我不知道如何实现管道的替换...使用正则表达式的全部内容,但不知道如何实现。有人可以帮我吗
最佳答案
尝试这样的事情
String result = response.replaceAll("([^\\]])(\\,)","$1\\|").replaceAll("[\\[\\]]","");
=> ([^\\]])(\\,) => ([^\])(\,)
每个逗号前面不带 ]
=> [\\[\\]] => [\[\]
] 每个 [ 或 ]
请注意
- 使用正则表达式替换是使用 String.replaceAll 或
Pattern
类 - 字符串是不可变的
关于java - 将字符串替换为我想要的内容时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22779687/