java - 将字符串替换为我想要的内容时遇到问题

标签 java string replace

我设法从请求中获取 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/

相关文章:

java - 脚本如何获取不同类型的命令行参数并将其提供给 java 程序?

c - 关于C中指针和字符串的问题

python - 如何替换 Python 中第一次出现的正则表达式?

java - 如何使用java从数组中删除/添加项目

SQL:替换为少量记录(mysql)

java - JUnit 崩溃说方法应该是静态的,然后崩溃说它不应该?

java - 通过 Jenkins 作为 Windows 服务运行时无法最大化浏览器

java - Spring 3 MVC + MySQL : cannot store € character

delphi - 在 Freepascal 编译的 DLL 和 Delphi 编译的 EXE 之间交换字符串 (PChar)

javascript - 分割字符串并保留分割器