在 使用go lang
中 blackfriday
的 markdown
解释器时遇到换行问题,在他的配置里面没有回车自动换行这个配置(还是我没找到?),所以自己做了一个
风.foxwho
以下是错误的,改正的在最后
/**
Markdown自动换行
*/
func MarkdownAutoNewline(str string) string {
re, _ := regexp.Compile("\\ *\\n")
str = re.ReplaceAllString(str, " \n")
//m.Content=strings.Replace(m.Content, "\n", " \n", -1)
reg := regexp.MustCompile("```([\\s\\S]*)```")
//返回str中第一个匹配reg的字符串
data := reg.Find([]byte(str))
strs := strings.Replace(string(data), " \n", "\n", -1)
re, _ = regexp.Compile("```([\\s\\S]*)```")
return re.ReplaceAllString(str, strs)
}
在go lang中,正则替换
函数名中不带Literal
的字符时,默认转义/解析其中的 $1
$name
等,
所以这里的正则替换要使用ReplaceAllLiteralString
这个函数
改正后的
/**
Markdown自动换行
*/
func MarkdownAutoNewline(str string) string {
re, _ := regexp.Compile("\\ *\\n")
str = re.ReplaceAllLiteralString(str, " \n")
//m.Content=strings.Replace(m.Content, "\n", " \n", -1)
reg := regexp.MustCompile("```([\\s\\S]*)```")
//返回str中第一个匹配reg的字符串
data := reg.Find([]byte(str))
strs := strings.Replace(string(data), " \n", "\n", -1)
re, _ = regexp.Compile("```([\\s\\S]*)```")
return re.ReplaceAllLiteralString(str, strs)
}