Last active
May 25, 2024 10:22
-
-
Save lindexi/3ba74c909b23d6426c779d0a8eb435c3 to your computer and use it in GitHub Desktop.
从 BBCode 转换为 Markdown
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Bbcode2md | |
{ | |
/// <summary> | |
/// To convert bbcode to markdown | |
/// </summary> | |
/// <remarks>[JonDum/BBCode-To-Markdown-Converter](https://github.com/JonDum/BBCode-To-Markdown-Converter )</remarks> | |
/// <param name="str"></param> | |
/// <returns></returns> | |
public static string BbcodetoMd(string str) | |
{ | |
str = ConvertBold(str); | |
str = ConvertItalics(str); | |
str = ConvertUnderline(str); | |
str = ConvertStrikethrough(str); | |
str = ConvertCenter(str); | |
str = ConvertQuote(str); | |
str = ConvertSize(str); | |
str = ConvertColor(str); | |
str = ConvertList(str); | |
str = ConvertImage(str); | |
str = ConvertUrl(str); | |
return ConvertCode(str); | |
} | |
private static string ConvertCode(string str) | |
{ | |
var regex = new Regex(@"\[code\](.*?)\[\/code\]"); | |
str = regex.Replace(str, "'$1'"); | |
regex = new Regex(@"\[code\]((?:.|\n)+?)\[\/code\]"); | |
var t = regex.Match(str); | |
if (t.Success) | |
{ | |
str = $@"``` | |
{t.Groups[1].Value} | |
```"; | |
} | |
return str; | |
} | |
private static string ConvertUrl(string str) | |
{ | |
var regex = new Regex(@"\[url=(.+?)\]((?:.|\n)+?)\[\/url\]"); | |
return regex.Replace(str, "[$2]($1)"); | |
} | |
private static string ConvertImage(string str) | |
{ | |
var regex = new Regex(@"\[img\]((?:.|\n)+?)\[\/img\]"); | |
return regex.Replace(str, ""); | |
} | |
private static string ConvertList(string str) | |
{ | |
var regex = new Regex(@"\[list\=1\]((?:.|\n)+?)\[\/list\]"); | |
var t = regex.Match(str); | |
if (t.Success) | |
{ | |
str = t.Groups[1].Value.Replace("[*]", "1. "); | |
} | |
return str; | |
} | |
private static string ConvertColor(string str) | |
{ | |
var regex = new Regex(@"\[color\=.+?\]((?:.|\n)+?)\[\/color\]"); | |
List<string> t = new List<string>() | |
{ | |
// list of colors from http://if.invisionfree.com/topic/423042/1/ | |
"Aliceblue", | |
"Antiquewhite", | |
"Aqua", | |
"Aquamarine", | |
"Azure", | |
"Beige", | |
"Bisque", | |
"Black", | |
"Blanchedalmond", | |
"Blue", | |
"Blueviolet", | |
"Brown", | |
"Burlywood", | |
"Cadetblue", | |
"Chartreuse", | |
"Chocolate", | |
"Coral", | |
"Cornflowerblue", | |
"Cornsilk", | |
"Crimson", | |
"Cyan", | |
"Darkblue", | |
"Darkcyan", | |
"Darkgoldenrod", | |
"Darkgray", | |
"Darkgreen", | |
"Darkkhaki", | |
"Darkmagenta", | |
"Darkolivegreen", | |
"Darkorange", | |
"Darkorchid", | |
"Darkred", | |
"Darksalmon", | |
"Darkseagreen", | |
"Darkslateblue", | |
"Darkslategray", | |
"Darkturquoise", | |
"Darkviolet", | |
"Deeppink", | |
"Deepskyblue", | |
"Dimgray", | |
"Dodgerblue", | |
"Firebrick", | |
"Floralwhite", | |
"Forestgreen", | |
"Fuchsia", | |
"Gainsboro", | |
"Ghostwhite", | |
"Gold", | |
"Goldenrod", | |
"Gray", | |
"Green", | |
"Greenyellow", | |
"Honeydew", | |
"Hotpink", | |
"Indianred", | |
"Indigo", | |
"Ivory", | |
"Khaki", | |
"Lavender", | |
"Lavenderblush", | |
"Lawngreen", | |
"Lemonchiffon", | |
"Lightblue", | |
"Lightcoral", | |
"Lightcyan", | |
"Lightgoldenrodyellow", | |
"Lightgray", | |
"Lightpink", | |
"Lightsalmon", | |
"Lightseagreen", | |
"Lightskyblue", | |
"Lightslategray", | |
"Lightsteelblue", | |
"Lightyellow", | |
"Lime", | |
"Limegreen", | |
"Linen", | |
"Magenta", | |
"Maroon", | |
"Mediumaquamarine", | |
"Mediumblue", | |
"Mediumorchid", | |
"Mediumpurple", | |
"Mediumseagreen", | |
"Mediumslateblue", | |
"Mediumspringgreen", | |
"Mediumturquoise", | |
"Mediumvioletred", | |
"Midnightblue", | |
"Mintcream", | |
"Mistyrose", | |
"Moccasin", | |
"Navajowhite", | |
"Navy", | |
"Oldlace", | |
"Olive", | |
"Olivedrab", | |
"Orange", | |
"Orangered", | |
"Orchid", | |
"Palegoldenrod", | |
"Palegreen", | |
"Paleturquoise", | |
"Palevioletred", | |
"Papayawhip", | |
"Peachpuff", | |
"Peru", | |
"Pink", | |
"Plum", | |
"Powderblue", | |
"Purple", | |
"Red", | |
"Rosybrown", | |
"Royalblue", | |
"Saddlebrown", | |
"Salmon", | |
"Sandybrown", | |
"Seagreen", | |
"Seashell", | |
"Sienna", | |
"Silver", | |
"Skyblue", | |
"Slateblue", | |
"Slategray", | |
"Snow", | |
"Springgreen", | |
"Steelblue", | |
"Tan", | |
"Teal", | |
"Thistle", | |
"Tomato", | |
"Turquoise", | |
"Violet", | |
"Wheat", | |
"White", | |
"Whitesmoke", | |
"Yellow", | |
"Yellowgreen" | |
}; | |
str = regex.Replace(str, "$1"); | |
foreach (var temp in t) | |
{ | |
regex = new Regex($@"\[{temp}\]((?:.|\n) +?)\[\/{temp}\]"); | |
str = regex.Replace(str, "$1"); | |
} | |
return str; | |
} | |
private static string ConvertSize(string str) | |
{ | |
var regex = new Regex(@"\[size\=.+?\]((?:.|\n)+?)\[\/size\]"); | |
return regex.Replace(str, "$1"); | |
} | |
private static string ConvertQuote(string str) | |
{ | |
var regex = new Regex(@"\[quote\=.+?\]((?:.|\n)+?)\[\/quote\]"); | |
return regex.Replace(str, "$1"); | |
} | |
private static string ConvertCenter(string str) | |
{ | |
var regex = new Regex(@"\[center\]((?:.|\n)+?)\[\/center\]"); | |
return regex.Replace(str, "$1"); | |
} | |
private static string ConvertStrikethrough(string str) | |
{ | |
var regex = new Regex(@"\[s\]((?:.|\n)+?)\[\/s\]"); | |
return regex.Replace(str, "~~$1~~"); | |
} | |
private static string ConvertUnderline(string str) | |
{ | |
Regex regex = new Regex(@"\[u\]((?:.|\n)+?)\[\/u\]"); | |
return regex.Replace(str, "$1"); | |
} | |
private static string ConvertItalics(string str) | |
{ | |
Regex regex = new Regex(@"\[i\]((?:.|\n)+?)\[\/i\]"); | |
return regex.Replace(str, "*$1*"); | |
} | |
private static string ConvertBold(string str) | |
{ | |
Regex regex = new Regex(@"\[b\]((?:.|\n)+?)\[\/b\]"); | |
return regex.Replace(str, "**$1**"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment