2018-5-20-C#-BBcode-转-Markdown
title | author | date | CreateTime | categories |
---|---|---|---|---|
C# BBcode 转 Markdown
|
lindexi
|
2018-05-20 14:58:57 +0800
|
2018-2-13 17:23:3 +0800
|
C#
|
本文告诉大家一个简单的方法从 BBcode 转为 Markdown
本文的方法都是使用正则转换,现在支持的代码只有很少的常用标签,如果大家发现有转换失败的,请帮我修改代码,估计代码我不会进行修改。
最重要的就是转换 url 和 image,那么主要就告诉大家如何转换这两个
private static string ConvertUrl(string str)
{
var regex = new Regex(@"\[url=(.+?)\]((?:.|\n)+?)\[\/url\]");
return regex.Replace(str, "[$2]($1)");
}
这就是转换 url 的代码,里面用了正则。一般使用正则拿到的数据就是(
里的数据,如上面的代码,可能看起来有些复杂,那么用下面的代码告诉大家。
例如 需要拿出 123lindexifoo中的 lindexi ,那么正则可以这样写
123(lindexi)foo
如果需要拿到 lindexi ,可以使用下面代码
var regex = new Regex(@"123(lindexi)foo");
if (regex.Match(str).Groups[1].Value == "lindexi")
{ }
实际使用会在 regex.Match 之后判断是否成功,而不是直接拿出来。从上面代码可以看到我使用了1
而不是0,那么下面的代码拿到的字符串?
var regex = new Regex(@"123(lindexi)foo");
str = regex.Match(str).Groups[0].Value;
这个 str 拿到是 123lindexifoo 就是原来匹配到的所有字符串。
如果需要替换某个字符串,可以使用下面的代码
str = "123lindexifoo";
var regex = new Regex(@"123(lindexi)foo");
str = regex.Replace(str, "csdn"); str == "csdn"
如果想把上面的字符串替换为 lindexi csdn ,那么可以使用下面代码
str = "123lindexifoo";
var regex = new Regex(@"123(lindexi)foo");
str = regex.Replace(str, "$1csdn");
可以看到上面的替换使用了 $1
,这个就是第一个匹配拿到的字符串。如果需要拿第二个,就是使用$2
,所以做这个很简单
从上面的代码可以看到,转换 image 可以使用代码
var regex = new Regex(@"\[img\]((?:.|\n)+?)\[\/img\]");
return regex.Replace(str, "");
转换其他的代码上传到 github ,如果是在我博客可以直接看到
<script src="https://gist.github.com/lindexi/3ba74c909b23d6426c779d0a8eb435c3.js"></script>
2018-5-20-C#-BBcode-转-Markdown的更多相关文章
- OSC Source Code Innovation Salon(2018.10.20)
时间:2018.10.20地点:北京 朝阳 浦项中心B座2层
- C# BBcode 转 Markdown
本文告诉大家一个简单的方法从 BBcode 转为 Markdown 本文的方法都是使用正则转换,现在支持的代码只有很少的常用标签,如果大家发现有转换失败的,请帮我修改代码,估计代码我不会进行修改. 最 ...
- PCB 所建不凡 AWS 技术峰会2018 • 深圳站 2018.9.20
在去[AWS 技术峰会2018 • 深圳站]之提前并没有AWS提前做功课,主要PCB这行业基本自己搭服务器搭应用,不会买云服务器.由于没用过企业级的云服务器,对云这方面还是了解还是非常有限的. 市面上 ...
- 2018.8.20 Python之路---常用模块
一.re模块 查找: re.findall(‘正则表达式’,‘字符串’) 匹配所有符合正则表达式的内容,形成一个列表,每一项都是列表中的一个元素. ret = re.findall('\d+','sj ...
- 2018.10.20 2018-2019 ICPC,NEERC,Southern Subregional Contest(Online Mirror, ACM-ICPC Rules)
i207M的“怕不是一个小时就要弃疗的flag”并没有生效,这次居然写到了最后,好评=.= 然而可能是退役前和i207M的最后一场比赛了TAT 不过打得真的好爽啊QAQ 最终结果: 看见那几个罚时没, ...
- 2018.9.20 Educational Codeforces Round 51
蒟蒻就切了四道水题,然后EF看着可写然而并不会,中间还WA了一次,我太菜了.jpg =.= A.Vasya And Password 一开始看着有点虚没敢立刻写,后来写完第二题发现可以暴力讨论,因为保 ...
- 2018.6.20 Java考试试题总结(Java语言基础与面向对象编程)最新版
Java考试试题总结 一.单选题(每题1分 * 50 = 50分) 1.java程序的执行过程中用到一套JDK工具,其中javac.exe指( B ) A.java语言解释器 B.java字节码编译器 ...
- 2018.5.20 oracle强化练习
--现在有一个商店的数据库,记录客户以及购物的情况, 商品表goods (商品号 goodsid varchar2(8) 商品名 goodsname varchar2(20) 单价 unitprice ...
- 【2018.10.20】CXM笔记(思维)
1. 给你个环状字符串,问从哪个地方拆开能使它的字典序最小. 先预处理任意子串的哈希值. 然后枚举拆点,将它与当前最优的拆点比较谁更优(就是从哪拆的字典序更小),具体方法是二分+哈希找出两串最长的相同 ...
- 【2018.9.20】JOI 2017 Final T3「JOIOI 王国 / The Kingdom of JOIOI」
题目链接 题目描述 JOIOI 王国是一个 $H$ 行 $W$ 列的长方形网格,每个 $1\times 1$ 的子网格都是一个正方形的小区块.为了提高管理效率,我们决定把整个国家划分成两个省 $JOI ...
随机推荐
- web--响应式导航菜单
响应式导航菜单 代码如下 HTML代码: <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- 印度黑客滥用移动设备管理服务MDM监视iPhone用户
两周前首次亮相的印度高度针对性的移动恶意软件广告系列已被发现是针对多种平台的广泛广告系列的一部分,包括Windows设备,也可能是Android. 在本月早些时候,Talos威胁情报部门的研究人员发现 ...
- GC、进程和线程的定义
GC是什么,为什么要有GC GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃.Java提供的GC ...
- SpringBoot---事务支持
1.自动配置的事务管理器 1.1.使用JDBC 作为 数据访问技术 时,SpringBoot 为我们 定义了 PlatformTransactionManager的实现 DataSourc ...
- UVa 1009 Sharing Chocolate (数位dp)
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble ...
- python的可视化展示(待更新)
参考:https://www.cnblogs.com/zhizhan/p/5615947.html 通过matplotlib进行绘图: 例1: import matplotlib.pyplot as ...
- // 62.是否有利润奖--lrj private boolean isProfitsAward; // 63.利润奖--lrj_price private String profitsAward;
// 62.是否有利润奖--lrj private boolean isProfitsAward; // 63.利润奖--lrj_price private String profitsAward; ...
- Xcode之增加环境变量(多种环境区分)
序言: Xcode默认有DEBUG何RELEASE模式,如果我们在项目中想增加预发布环境或者再增加多个环境呢?如果在项目中用if else 弄个全局变量来控制,每次打包之前去手动修改,这样不仅繁琐,而 ...
- iOS设计模式之适配器模式
一,适配器的定义 定义 将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 需求场景 需要使用以前开发的“一些现存的对象”,但是新环境中要求 ...
- ORACLE数据库 memory_target SGA 大小
修改 memory_target 用oracle用户登录,sqlplus "/as sysdba"SQL> show parameters target; show ...