【发布时间】:2023-03-17 07:50:01
【问题描述】:
我想将 bash 变量中存在的字符串转换为 Java 支持的字符串样式。
例如:
data="{"5": ">10%", "4": "<5%", "3": ">28 months", "2": "20%", "1": 100}"
作为
echo $data
给我这个结果:
"{\n" +
" \"1\": 21,\n" +
" \"2\": \"40%\",\n" +
" \"3\": \"<24 months\",\n" +
" \"4\": \"<5%\",\n" +
" \"5\": \">10%\"\n" +
"}"
但我还需要使用echo "String data = $data;" >> file.txt 将此值传输到一个文件中,其中数据是处理后的值,它会抛出奇怪的结果
String data = "{
" +
" \"5\": \">10%\",
" +
" \"4\": \"<5%\",
" +
" \"3\": \">28 months\",
" +
" \"2\": \"20%\",
" +
" \"1\": 100
" +
"}";
但预期是:
String data = "{\n" +
" \"1\": 50,\n" +
" \"2\": \"40%\",\n" +
" \"3\": \">28 months\",\n" +
" \"4\": \"<5%\",\n" +
" \"5\": \">10%\"\n" +
"}";
【问题讨论】:
-
到目前为止你尝试了什么?
-
尝试 1:echo "${data//$'\n'/"\n\" +"} 尝试 2:echo $data | tr "\"" "\\\"" 尝试 3:echo "${data//\""\\"}" 尝试 4:sed -E 's/"/\\&/4g; s/\\"(,)?$/"\1/ 没有成功
-
请在问题中包含您尝试过的内容,格式正确。注释不适用于代码。仅使用它们来通知您进行了更改。有关问题的所有重要信息都应包含在问题本身中。
-
在某些 IDE 中,可以复制文本并将其粘贴到
"|"之间,然后根据需要扩展文本。或者,您将文本存储在类路径上的 resource 文件中,并打包在应用程序 jar 中。 -
@vfalcao,当 json 值具有更多数组形式的引号时,该解决方案在一种情况下失败,例如:
"array": ["val1", "val2"],然后输出类似于:" \"array\": [\"val1\",\n" + "\"val2\"],\n" +那么有解决方法吗? ?
标签: java string bash sh implicit-conversion