zoukankan
html css js c++ java
UBB
参考了一些文章,整理了一下,大家可以直接拿去用吧,其实自从有了FreeTextBox这样的东东出现,UBB已经渐渐淡出江湖了。
using
System;
using
System.Text;
using
System.Text.RegularExpressions;
namespace
Test.Com
{
/**/
///
<summary>
///
功能:UBB代码
///
作者:Rexsp
///
日期:2004-4-6
///
</summary>
public
class
UBB
{
构造函数
#region
构造函数
public
UBB()
{
//
//
TODO: 在此处添加构造函数逻辑
//
}
#endregion
公共静态方法
#region
公共静态方法
/**/
///
<summary>
///
UBB代码处理函数
///
</summary>
///
<param name="sDetail">
输入字符串
</param>
///
<returns>
输出字符串
</returns>
public
static
string
UBBToHTML(
string
sDetail)
{
Regex r;
Match m;
处理空格
#region
处理空格
sDetail
=
sDetail.Replace(
"
"
,
"
"
);
#endregion
html标记符
#region
html标记符
sDetail
=
sDetail.Replace(
"
<
"
,
"
<
"
);
sDetail
=
sDetail.Replace(
"
>
"
,
"
>
"
);
#endregion
处[b][/b]标记
#region
处[b][/b]标记
r
=
new
Regex(
@"
(\[b\])([ \S\t]*?)(\[\/b\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<B>
"
+
m.Groups[
2
].ToString()
+
"
</B>
"
);
}
#endregion
处[i][/i]标记
#region
处[i][/i]标记
r
=
new
Regex(
@"
(\[i\])([ \S\t]*?)(\[\/i\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<I>
"
+
m.Groups[
2
].ToString()
+
"
</I>
"
);
}
#endregion
处[u][/u]标记
#region
处[u][/u]标记
r
=
new
Regex(
@"
(\[U\])([ \S\t]*?)(\[\/U\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<U>
"
+
m.Groups[
2
].ToString()
+
"
</U>
"
);
}
#endregion
处[p][/p]标记
#region
处[p][/p]标记
//
处[p][/p]标记
r
=
new
Regex(
@"
((\r\n)*\[p\])(.*?)((\r\n)*\[\/p\])
"
,RegexOptions.IgnoreCase
|
RegexOptions.Singleline);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<P class=\
"
pstyle\
"
>
"
+
m.Groups[
3
].ToString()
+
"
</P>
"
);
}
#endregion
处[sup][/sup]标记
#region
处[sup][/sup]标记
//
处[sup][/sup]标记
r
=
new
Regex(
@"
(\[sup\])([ \S\t]*?)(\[\/sup\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<SUP>
"
+
m.Groups[
2
].ToString()
+
"
</SUP>
"
);
}
#endregion
处[sub][/sub]标记
#region
处[sub][/sub]标记
//
处[sub][/sub]标记
r
=
new
Regex(
@"
(\[sub\])([ \S\t]*?)(\[\/sub\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<SUB>
"
+
m.Groups[
2
].ToString()
+
"
</SUB>
"
);
}
#endregion
处
标记
#region
处
标记
//
处
标记
r
=
new
Regex(
@"
(\[url\])([ \S\t]*?)(\[\/url\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<A href=\
""
+ m.Groups[2].ToString() +
"
\
"
target=\
"
_blank\
"
><IMG border=0 src=\
"
images
/
url.gif\
"
>
"
+
m.Groups[
2
].ToString()
+
"
</A>
"
);
}
#endregion
处[url=xxx][/url]标记
#region
处[url=xxx][/url]标记
//
处[url=xxx][/url]标记
r
=
new
Regex(
@"
(\[url=([ \S\t]+)\])([ \S\t]*?)(\[\/url\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<A href=\
""
+ m.Groups[2].ToString() +
"
\
"
target=\
"
_blank\
"
><IMG border=0 src=\
"
images
/
url.gif\
"
>
"
+
m.Groups[
3
].ToString()
+
"
</A>
"
);
}
#endregion
处[email][/email]标记
#region
处[email][/email]标记
//
处[email][/email]标记
r
=
new
Regex(
@"
(\[email\])([ \S\t]*?)(\[\/email\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<A href=\
"
mailto:
"
+ m.Groups[2].ToString() +
"
\
"
target=\
"
_blank\
"
><IMG border=0 src=\
"
images
/
email.gif\
"
>
"
+
m.Groups[
2
].ToString()
+
"
</A>
"
);
}
#endregion
处[email=xxx][/email]标记
#region
处[email=xxx][/email]标记
//
处[email=xxx][/email]标记
r
=
new
Regex(
@"
(\[email=([ \S\t]+)\])([ \S\t]*?)(\[\/email\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<A href=\
"
mailto:
"
+ m.Groups[2].ToString() +
"
\
"
target=\
"
_blank\
"
><IMG border=0 src=\
"
images
/
email.gif\
"
>
"
+
m.Groups[
3
].ToString()
+
"
</A>
"
);
}
#endregion
处[size=x][/size]标记
#region
处[size=x][/size]标记
//
处[size=x][/size]标记
r
=
new
Regex(
@"
(\[size=([1-7])\])([ \S\t]*?)(\[\/size\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<FONT SIZE=
"
+
m.Groups[
2
].ToString()
+
"
>
"
+
m.Groups[
3
].ToString()
+
"
</FONT>
"
);
}
#endregion
处[color=x][/color]标记
#region
处[color=x][/color]标记
//
处[color=x][/color]标记
r
=
new
Regex(
@"
(\[color=([\S]+)\])([ \S\t]*?)(\[\/color\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<FONT COLOR=
"
+
m.Groups[
2
].ToString()
+
"
>
"
+
m.Groups[
3
].ToString()
+
"
</FONT>
"
);
}
#endregion
处[font=x][/font]标记
#region
处[font=x][/font]标记
//
处[font=x][/font]标记
r
=
new
Regex(
@"
(\[font=([\S]+)\])([ \S\t]*?)(\[\/font\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<FONT FACE=
"
+
m.Groups[
2
].ToString()
+
"
>
"
+
m.Groups[
3
].ToString()
+
"
</FONT>
"
);
}
#endregion
处理图片链接
#region
处理图片链接
//
处理图片链接
r
=
new
Regex(
"
\\[picture\\](\\d+?)\\[\\/picture\\]
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<A href=\
"
ShowImage.aspx
?
Type
=
ALL
&
Action
=
forumImage
&
ImageID
=
"
+ m.Groups[1].ToString() +
"
\
"
target
=
\
"
_blank\
"
><
IMG border
=
0
Title
=
\
"
点击打开新窗口查看\
"
src
=
\
"
ShowImage.aspx?Action=forumImage&ImageID=
"
+
m.Groups[
1
].ToString()
+
"
\
"
></
A
>
"
);
}
#endregion
处理[align=x][/align]
#region
处理[align=x][/align]
//
处理[align=x][/align]
r
=
new
Regex(
@"
(\[align=([\S]+)\])([ \S\t]*?)(\[\/align\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<P align=
"
+
m.Groups[
2
].ToString()
+
"
>
"
+
m.Groups[
3
].ToString()
+
"
</P>
"
);
}
#endregion
处[H=x][/H]标记
#region
处[H=x][/H]标记
//
处[H=x][/H]标记
r
=
new
Regex(
@"
(\[H=([1-6])\])([ \S\t]*?)(\[\/H\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<H
"
+
m.Groups[
2
].ToString()
+
"
>
"
+
m.Groups[
3
].ToString()
+
"
</H
"
+
m.Groups[
2
].ToString()
+
"
>
"
);
}
#endregion
处理[list=x][*][/list]
#region
处理[list=x][*][/list]
//
处理[list=x][*][/list]
r
=
new
Regex(
@"
(\[list(=(A|a|I|i| ))?\]([ \S\t]*)\r\n)((\[\*\]([ \S\t]*\r\n))*?)(\[\/list\])
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
string
strLI
=
m.Groups[
5
].ToString();
Regex rLI
=
new
Regex(
@"
\[\*\]([ \S\t]*\r\n?)
"
,RegexOptions.IgnoreCase);
Match mLI;
for
(mLI
=
rLI.Match(strLI); mLI.Success; mLI
=
mLI.NextMatch())
{
strLI
=
strLI.Replace(mLI.Groups[
0
].ToString(),
"
<LI>
"
+
mLI.Groups[
1
]);
}
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<UL TYPE=\
""
+ m.Groups[3].ToString() +
"
\
"
><B>
"
+
m.Groups[
4
].ToString()
+
"
</B>
"
+
strLI
+
"
</UL>
"
);
}
#endregion
处理换行
#region
处理换行
//
处理换行,在每个新行的前面添加两个全角空格
r
=
new
Regex(
@"
(\r\n(( )| )+)(?<正文>\S+)
"
,RegexOptions.IgnoreCase);
for
(m
=
r.Match(sDetail); m.Success; m
=
m.NextMatch())
{
sDetail
=
sDetail.Replace(m.Groups[
0
].ToString(),
"
<BR>
"
+
m.Groups[
"
正文
"
].ToString());
}
//
处理换行,在每个新行的前面添加两个全角空格
sDetail
=
sDetail.Replace(
"
\r\n
"
,
"
<BR>
"
);
#endregion
return
sDetail;
}
#endregion
}
}
查看全文
相关阅读:
Git更新或提交出错的解决办法
webpack简单学习的入门教程
CentOS源码安装QT
后台程序在向tty/串口写数据的时候stop了
Linux signal 处理
Linux C 获取 文件的大小
Microsoft Excel 标题栏或首行锁定
Socket连接何时需要断开
Windows MFC 打开文本
动态库的生产和调用
原文地址:https://www.cnblogs.com/LCX/p/110246.html
最新文章
调试目标应用程序的方式
用火狐打开PDF文件
schtasks命令遇见ERROR: The request is not supported.
SC命令执行出现Access is denied
C#中用ILMerge将所有引用的DLL打成一个DLL文件
各个浏览器下实现Ajax的JS
IE9下Coolite.Ext出现createContextualFragment错误
NBTSTAT命令详解
使用Schtasks命令的注意事项
Schtasks 命令详解
热门文章
SC命令详解
net use命令详细解释
.Net IE10 _doPostBack 未定义
Vue使用html2Canvas和canvas2Image下载二维码会模糊的问题解决方法
iView开始结束时间组件
如何快速高效地学习react
VueJS开发所用到的技术栈
Echarts按需引入后没有显示图例问题
table中的td自动换行
申请微信小程序步骤
Copyright © 2011-2022 走看看