`
caozuiba
  • 浏览: 902958 次
文章分类
社区版块
存档分类
最新评论

C#写的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(" ","&nbsp;");
#endregion
#region html标记符
sDetail = sDetail.Replace("<","&lt;");
sDetail = sDetail.Replace(">","&gt;");
#endregion
#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
#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
#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
#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
#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
#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 处[url][/url]标记
//处[url][/url]标记
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
#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
#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
#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
#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
#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
#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
#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
#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
#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((&nbsp;)| )+)(?<正文>/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
}
}

分享到:
评论

相关推荐

    C#处理Ubb代码类

    C# 处理Ubb代码向html代码转换 辅助工具类 酌情修改

    C#的UBB代码

    C#的UBB代码,大家看一下

    C#UBB代码

    C#UBB代码...

    C#正则实现Ubb解析类的代码共9页.pdf.zip

    C#正则实现Ubb解析类的代码共9页.pdf.zip

    C#正则实现Ubb解析类的代码

    C#正则实现Ubb解析类的代码

    c#搜集的帮助类 c#搜集的帮助类

    日常工作总结,加上网上收集,各式各样的几乎都能找到,所有功能性代码都是独立的类,类与类之间没有联系,可以单独引用至项目,分享出来,方便大家,几乎都有注释,喜欢的请点赞,不断完善收集中... ## 样板图片...

    C#实现HTML和UBB互相转换的方法

    本文实例讲述了C#实现HTML和UBB互相转换的方法。分享给大家供大家参考。具体实现方法如下: html转UBB的还不是很完美,有空修改,一些代码来自百度谷歌,如下所示: 代码如下:private string DoHtmlToUBB(string _...

    asp.net(c#) ubb处理类

    asp.net下对于编辑器中的ubb进行替换处理的实现代码

    COCOWO1.0开源博客源码 C#

    自带HTML转换UBB代码功能 自定义模块.可以自己修改页面上的的布局. 让不懂制作网页的用户也能自己增加和修改页面上的版块. Skin功能,随时可以给自己的Blog换上新的CSS样式界面 自定义分类.可以同时定制外部连接...

    勇敢者论坛完整源代码(asp.net c# SQL 2000)

    使用ASP.NET+C# VS.NET 2003制作,代码和界面分离,调试维护方便。是用用户控件,大量修改方便。 2。使用SQL2000,支持大数据量的应用。 3。贴图看图功能强; 4。无第三方控件,调试运行方便; 5。代码...

    风越ASP代码生成器2.8

    内置的.net代码框架,能建立C#语言的.net解决方案,可在VS2005中直接编辑,既能帮助.net初学者快速入门,更可最大限度提高.net程序员的代码编写效率。 01、支持生成的ASPX/ASP/PHP/JSP等页面在本机自动发布、调试...

    NET公共类库[转发]

    UBB代码辅助类 UBB.cs UBB代码转换 客户端代码功能类 JScript.cs 提供向页面输出客户端代码实现特殊功能的方法 客户端代码精简类 JavaScriptMinifier.cs 转换原始Js内容的精简版本 HTML格式辅助类 HtmlUtils.cs 处理...

    C#的练习小程序集锦

    21 、字串变量.Replace("子字串","替换为") 字串替换 如: string str="中国";... 用此方法还可以简单实现UBB代码。 22、Math.Max(i,j) 取i与j中的最大值 如 int x=Math.Max(5,10); // x将取值 10

    风越.net代码生成器 v3.5

    内置的.net代码框架,能建立C#语言的.net解决方案,可在VS2005中直接编辑,既能帮助.net初学者快速入门,更可最大限度提高.net程序员的代码编写效率。 01、支持生成的ASPX/ASP/PHP/JSP等页面在本机自动发布、调试...

    风越.Net代码生成器 [FireCode Creator] V1.3 精简版

    内置的.net代码框架,能建立C#语言的.net解决方案,可在VS2005中直接编辑,既能帮助.net初学者快速入门,更可最大限度提高.net程序员的代码编写效率。 01、支持生成的ASPX/ASP/PHP/JSP等页面在本机自动发布、调试...

    风越asp代码生成器 V3.5

    内置的.net代码框架,能建立C#语言的.net解决方案,可在VS2005中直接编辑,既能帮助.net初学者快速入门,更可最大限度提高.net程序员的代码编写效率。 01、支持生成的ASPX/ASP/PHP/JSP等页面在本机自动发布、调试...

    CodeColorist

    除了FireFox和IE之外的浏览器都不支持格式文本的复制,您可以切换到 HTML(UBB)视图复制HTML(UBB)代码; 6. 如果生成的代码有异常,您可以单击编辑按钮返回修改; 7. 在博客、论坛编辑框中粘贴,您就可以发布您的...

Global site tag (gtag.js) - Google Analytics