前言
我在遇到准备将一串符合yaml 的字符串进行解析,在搜索之后发现解析yaml 基本都是对文件进行解析。但自己字符串用 new Yaml().loadAs 无法解析,按道理也是支持字符串不应该不支持。想到自己字符串的换行可能不对,那么在java中如何才认为是一个换行呢?
BufferedWriter writer = new BufferedWriter(write);
writer.newLine() 这样一个方法,看了这个实现方式
String lineSeparator = java.security.AccessController.doPrivileged(
new sun.security.action.GetPropertyAction("line.separator"));
这个是一个换行符, 通过这个看到换行符实际就是一个\r\n 但是又给自己拼接出来不一样。
效果就是
自己拼接出来\r\n ,如果是通过上面反复获取到换行符那就是真的换行了。那么有了上面理解就有下面一篇对字符串解析的工具类
实践
package com.yin.common.util;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
import sun.security.action.GetPropertyAction;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.security.AccessController;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
/**
* @author yin
* @since 2022/3/20 14:45
*/
public class YmlUtil {
private static Logger logger = LoggerFactory.getLogger(YmlUtil.class);
public static void main(</