我正在尝试读取一个Yaml模板,动态替换模板中的某些字段,并使用Snake Yaml创建一个新的Yaml文件。但当我使用snake YAML时,如果字符串包含必需字段的空格,我将得到转义空格字符。谁能提出解决这个问题的建议吗?
--------------------------------
version: snapshot-01
kind: sample
metadata:
name: abc
options: "<placeholder>"
--------------------------------
Yaml yaml = new Yaml();
InputStream inputStream =
this.getClass().getClassLoader().getResourceAsStream(yamlTemplateLocation);
Map<String, Object>yamlMap = yaml.load(inputStream);
当我用包含空格的字符串替换占位符时,例如:“abc sfksajfkl jfajfkjakj jqjlkkalkl kajklfjalkd”
yamlMap.put("version","v-1.0");
yamlMap.put("options","abc sfksajfkl jfajfkjakj jqjlkkalkl kajklfjalkd");
我得到的输出为
--------------------------------
version: "v-1.0"
kind: sample
metadata:
name: abc
options: "abc sfksajfkl jfajfkjakj
\ jqjlkkalkl kajklfjalkd "
--------------------------------
注意:在“ABC sfksajfkl jfajfkjakj\jqjlkkalkl kajklfjalkd”中生成转义空格字符(即“\”)
--------------------------------
version: "v-1.0"
kind: sample
metadata:
name: abc
options: "abc sfksajfkl jfajfkjakj jqjlkkalkl kajklfjalkd"
--------------------------------
有谁能帮我一下吗?提前道谢!
您显示的代码与YAML输出不匹配,因为代码只有单个空格。我将假设YAML中的内容是放入映射中的实际字符串,因为您显示的代码不会生成这个YAML并且您的要求还包括双空格。
转义字符只是断行的副作用。在多行上断开一个带引号的标量时,换行符会折叠成单个空格。但是,您在单词之间有多个空格,因此YAML必须插入一个转义空格,以将第二个空格标记为内容(第二行开头的所有非转义空格都被认为是缩进,而不是内容的一部分)。
所以你需要解决的实际问题是断线。您可以这样禁用它:
DumperOptions options = new DumperOptions();
options.setSplitLines(false);
Yaml yaml = new Yaml(options);
System.out.println(yaml.dump(yamlMap));
作为附带说明,带有换行符和转义空格的YAML确实可以正确加载。尽量不要对YAML表示形式提出太具体的要求,因为您无法完全控制它。
这个问题不难,我已经用自己的方法解决了,但我想听听你的意见,也许有什么方法可以让这成为一个改进的选择?Java 8-11。
问题内容: 如何在Python中将列表转换为以空格分隔的字符串? 例如,我要转换此列表: 入弦 空间很重要。到目前为止,我不希望自己尝试过 问题答案: 您需要使用空格而不是空字符串来连接…
是的,我可以直接从StringBuilder中移除初始行,但我很想知道问题的解决方案甚至是原因。 谢谢
问题内容: 我正在编写一些代码,以使用在终端中加载并运行文件的过程来运行Shell脚本。我遇到的问题是由于空格导致终端识别文件名,例如: 应该在终端中以 继承人代码更改将其替换: 我已经尝试过使用String.replaceAll但得到 我意识到我可以使用File.separatorChar: 但这似乎并不能代替任何东西。任何帮助将不胜感激。 谢谢 问题答案: 如果要将字符(即转义字符)放在字符串
问题内容: 有什么方法可以将null转换为Integer。null实际上是一个字符串,我在我的服务层中传递该字符串,将其接受为整数。因此,每当我尝试将null字符串强制转换为Integer时,都会引发异常。但是我必须将null转换为Integer。 问题答案: 您 不能 从String强制转换为Integer。但是,如果您尝试将字符串转换为整数,并且必须提供处理字符串的实现,请查看以下代码片段: