• 截取HTML C#代码

    香水坏坏 发表于2007-7-7 [ASP.NET]

    。。。。。。。头晕 肯定还没考虑完善 闷。。。

     

    C#代码
    1. protected string TrimHtml(string input, int length)   
    2. {   
    3. string inputHTML = input.Trim();   
    4. StringBuilder outHTML = new StringBuilder();   
    5.   
    6. int maxLength = length;   
    7. if (maxLength < inputHTML.Length)   
    8. {   
    9. inputHTML = inputHTML.Substring(0, 505);   
    10.   
    11. string firstMatch = "";   
    12. string lastMatch = "";   
    13. bool isRegexMatch = false;   
    14.   
    15. string patternMatchHTML = @"(<([a-z0-9]*)([^>]*)>(.*)<\s*/\s*\2>)|(<([a-z0-9]*)([^>]*)/\s*>)”;  
    16. Regex regex = new Regex(patternMatchHTML, RegexOptions.IgnoreCase);  
    17. Match m = regex.Match(inputHTML);  
    18. while(m.Success)  
    19. {  
    20. isRegexMatch = true;  
    21. if (firstMatch==”")   
    22. firstMatch = m.Value;   
    23. lastMatch = m.Value;   
    24. outHTML.Append(m.Value);   
    25.   
    26. m = m.NextMatch();   
    27.   
    28. }   
    29. if (isRegexMatch)   
    30. {   
    31. string beforeString = “”;   
    32. if (firstMatch != “”)   
    33. {   
    34. beforeString = inputHTML.Substring(0, inputHTML.IndexOf(firstMatch));   
    35. }   
    36. bool hasMeetingTag = false;   
    37. for (int i = beforeString.Length - 1; i >= 0; i–)   
    38. {   
    39. if (beforeString[i] == ‘>’)   
    40. {   
    41. hasMeetingTag = true;   
    42. }   
    43. else if (beforeString[i] == ‘<')  
    44. {  
    45. hasMeetingTag = false;  
    46. }  
    47. else  
    48. {  
    49. if (!hasMeetingTag)  
    50. outHTML.Insert(0, beforeString[i]);  
    51. }  
    52. }  
    53.  
    54. string lastString = "";  
    55. if (lastMatch != "")  
    56. {  
    57. lastString = inputHTML.Substring(inputHTML.LastIndexOf(lastMatch) + lastMatch.Length);  
    58. }  
    59. hasMeetingTag = false;  
    60. for (int i = 0; i < lastString.Length; i++)  
    61. {  
    62. if (lastString[i] == '<')  
    63. {  
    64. hasMeetingTag = true;  
    65. }  
    66. else if (lastString[i] == '>‘)   
    67. {   
    68. hasMeetingTag = false;   
    69. }   
    70. else  
    71. {   
    72. if (!hasMeetingTag)   
    73. outHTML.Append(lastString[i]);   
    74. }   
    75. }   
    76. }   
    77. else  
    78. {   
    79. outHTML.Append(inputHTML);   
    80. }   
    81. }   
    82. else  
    83. {   
    84. outHTML.Append(inputHTML);   
    85. }   
    86. return outHTML.ToString().Trim();   
    87. }   
    88.   

     

    Hits: 725  Feedback: 0  标签:HTML  Trackback  Permalink: http://www.aspstat.com/41
  • FCKEditor插件 实现飞行字

    香水坏坏 发表于2007-7-7 [Javascript]

    下载地址:fly.rar

    安装方法参见:http://www.aspstat.com/index.php/archives/27

    Hits: 757  Feedback: 0  标签:FCKEditor 插件  Trackback  Permalink: http://www.aspstat.com/40
  • FCKEditor插件 实现文字发光

    香水坏坏 发表于2007-7-7 [Javascript]

    供学习交流,如有转载请注明

    下载地址:glow.rar

    安装方法:
    1、解压文件到FCKEditor安装目录的editor\plugins目录下

    2、修改fckconfig.js
    加入代码:FCKConfig.Plugins.Add( ‘glow’ );

    3、如何加到工具条上
    FCKConfig.ToolbarSets[”你的工具条名称”] = [
    [’Bold’,'Italic’,'Underline’,'StrikeThrough’],
    [’Link’,'Unlink’],
    [’Image’,'Smiley’],
    ‘/’,
    [’TextColor’,'BGColor’,'Glow’,'-’,'FontSize’] //在这里加入了Glow
    ] ;

    效果图如:
    glow.jpg

    Hits: 961  Feedback: 3  标签:FCKEditor 插件  Trackback  Permalink: http://www.aspstat.com/39
  • JQUERY插件:PageValidator验证插件更新文件下载

    香水坏坏 发表于2007-7-7 [Javascript]

    PS:好忙啊 事情做完又有 本来偶想用.net把blog换了都木时间了,更木时间来写blog,贴个更新的pagevalidator
    。。。。为什么网通访问电信这么慢啊,偶发个日志真的要命了。。。。

    PageValidator的一个修正版本的代码下载
    (More...)

    Hits: 10269  Feedback: 47  标签:JQUERY 表单验证 插件  Trackback  Permalink: http://www.aspstat.com/38
  • asp.net生成缩略图(C#)

    香水坏坏 发表于2007-7-7 [ASP.NET]

    这几天哈忙,好久有那么一二天木写BLOG,发段生成缩略图的代码吧

     

    C#代码
    1. private static XmlDocument _menudocument;   
    2. private static object _menulock = new object();   
    3.   
    4. public static XmlDocument MenuXml   
    5. {   
    6. get  
    7. {   
    8. lock (_menulock)   
    9. {   
    10. if (_menudocument == null)   
    11. {   
    12. _menudocument = new XmlDocument();   
    13. _menudocument.Load(HttpContext.Current.Server.MapPath("~/exp/sitemap.xml"));   
    14.   
    15. }   
    16. }   
    17. return _menudocument;   
    18. }   
    19. }   
    20.   
    21. public static Image DrawingBreviaryImage(string path, int width, int height)   
    22. {   
    23. Image orginImg = Image.FromFile(path);   
    24. return DrawingBreviaryImage(orginImg, width, height);   
    25. }   
    26. public static Image DrawingBreviaryImage(Stream stream, int width, int height)   
    27. {   
    28. Image orginImg = Image.FromStream(stream);   
    29. return DrawingBreviaryImage(orginImg, width, height);   
    30. }   
    31. ///    
    32. /// get a breviary image of orginImg,which outter size will be deleted if orginimg size bigger than the rect specify   
    33. ///    
    34. /// orginImg /// rect width /// rect height ///    
    35. public static Image DrawingBreviaryImage(Image orginImg, int width, int height)   
    36. {   
    37. Bitmap ret = new Bitmap(width, height);   
    38. Graphics g = Graphics.FromImage(ret);   
    39.   
    40. g.CompositingQuality = CompositingQuality.HighSpeed;   
    41. g.SmoothingMode = SmoothingMode.HighSpeed;   
    42. g.Clear(Color.White);   
    43.   
    44. double scalePercentX = (double)orginImg.Width / (double)width;   
    45. double scalePercentY = (double)orginImg.Height / (double)height;   
    46.   
    47. int x = 0, y = 0, orginwidth = orginImg.Width, orginHeight = orginImg.Height;   
    48. if (scalePercentX > scalePercentY)   
    49. {   
    50. orginwidth = (int)Math.Floor(width * scalePercentY);   
    51. x = (orginImg.Width - orginwidth) / 2;   
    52. }   
    53. else  
    54. {   
    55. orginHeight = (int)Math.Floor(height * scalePercentX);   
    56. y = (orginImg.Height - orginHeight) / 2;   
    57. }   
    58. g.DrawImage(orginImg, new Rectangle(0, 0, width, height), new Rectangle(x, y, orginwidth, orginHeight), GraphicsUnit.Pixel);   
    59. g.Flush();   
    60. g.Dispose();   
    61. orginImg.Dispose();   
    62. return ret;   
    63. }   
    64.   

     

    Hits: 680  Feedback: 1  标签:缩略图  Trackback  Permalink: http://www.aspstat.com/37
  • 多线程和异步的区别

    香水坏坏 发表于2007-7-7 [ASP.NET]

    注:本文内容摘自网络整理

    异步调用并不是要减少线程的开销, 它的主要目的是让调用方法的主线程不需要同步等待
    在这个函数调用上, 从而可以让主线程继续执行它下面的代码.
    与此同时, 系统会通过从ThreadPool中取一个线程来执行,帮助我们将我们要写/读的数据发送到网卡.
    由于不需要我们等待, 我们等于同时做了两件事情. 这个效果跟自己另外启动一个线程来执行等待方式的写操作是一样的.
    但是, 异步线程可以利用操作系统/.Net的线程池, 系统可以根据吞吐量动态的管理线程池的大小.

    (More...)
    Hits: 870  Feedback: 0  标签:多线程 异步  Trackback  Permalink: http://www.aspstat.com/36
  • 用堆管理你的数据库事务

    香水坏坏 发表于2007-7-7 [ASP.NET]

    原文地址:http://www.codeguru.com/csharp/csharp/cs_data/cachingandpeformance/article.php/c13437/

    在许多WEB应用程序中,尽管对数据库操作大多数是用单次表查询或修改,有些部分你需要进行多次修改数据库。
    这样的情况下,你应该考虑使用事物处理(transactions).事务定义了一系列需要被执行的工作,为了完成事务,
    事务的每个部分都必须成功完成。如果都完成了,事务被提交到数据库。如果没有,所有的改变都将滚回(不修改)。
    如果你要处理的任务非常复杂,你也可以选择镶套事务。

    在我写的一部分代码中,我建立了一个方法用Stack(堆)集合来管理镶套的事务。堆是计算机科学里面一个基础概念,
    实现后进先出结构。当你开始事务处理,把事物压到堆里。当你提交事务,它从堆里移出。如果你需要滚回事务,你必须
    滚回每一个镶套事务。堆对于完成这项工作来说太完美了。

    (More...)
    Hits: 541  Feedback: 0  标签: 事务 数据库  Trackback  Permalink: http://www.aspstat.com/35
  • 求离最近发表时间的函数

    香水坏坏 发表于2007-7-7 [ASP.NET]
    C#代码
    1. public string DateStringFromNow(DateTime dt)   
    2. {   
    3. TimeSpan span = DateTime.Now - dt;   
    4. if (span.TotalDays > 60)   
    5. {   
    6. return dt.ToShortDateString();   
    7. }   
    8. else if ( span.TotalDays > 30 )   
    9. {   
    10. return "1个月前";   
    11. }   
    12. else if (span.TotalDays > 14)   
    13. {   
    14. return "2周前";   
    15. }   
    16. else if (span.TotalDays > 7)   
    17. {   
    18. return "1周前";   
    19. }   
    20. else if (span.TotalDays > 1)   
    21. {   
    22. return string.Format("{0}天前", (int)Math.Floor(span.TotalDays));   
    23. }   
    24. else if (span.TotalHours > 1)   
    25. {   
    26. return string.Format("{0}小时前", (int)Math.Floor(span.TotalHours));   
    27. }   
    28. else if (span.TotalMinutes > 1)   
    29. {   
    30. return string.Format("{0}分钟前", (int)Math.Floor(span.TotalMinutes));   
    31. }   
    32. else if (span.TotalSeconds >= 1)   
    33. {   
    34. return string.Format("{0}秒前", (int)Math.Floor(span.TotalSeconds));   
    35. }   
    36. else  
    37. {   
    38. return "1秒前";   
    39. }   
    40. }   
    41.   
    Hits: 577  Feedback: 0  标签:C#  Trackback  Permalink: http://www.aspstat.com/34
  • 存储过程:插入更新访问记录

    香水坏坏 发表于2007-7-7 [Database]

    表结构
    username nvarchar(32) not null,
    visitname nvarchar(32) not null,
    sortnum int default(0) not null

     

    (More...)
    Hits: 827  Feedback: 0  标签:MSSQL 存储过程  Trackback  Permalink: http://www.aspstat.com/33
  • MSSQL分页存储过程

    香水坏坏 发表于2007-7-7 [Database]
    SQL代码
    1. 自己改写的一个分页存储过程   
    2. CREATE PROC Paging   
    3. (   
    4. @pageSize int,   
    5. @pageIndex int,   
    6. @pageField nvarchar(32),   
    7. @countTotal bit=1,   
    8. @fieldQuery nvarchar(512),   
    9. @tableQuery nvarchar(512),   
    10. @whereQuery nvarchar(2048),   
    11. @orderQuery nvarchar(512)   
    12. )   
    13. AS  
    14. DECLARE @bdate Datetime   
    15. SET @bdate = getdate()   
    16. DECLARE @itemcount int  
    17. SET @itemcount=@pageIndex*@pageSize   
    18. DECLARE @itemlowwer int  
    19. SET @itemlowwer=(@pageIndex-1)*@pageSize   
    20. DECLARE @cmd nvarchar(3062)   
    21.   
    22. IF @pageIndex=1   
    23. SET @cmd =’SELECT TOP ‘+CAST(@pageSize AS NVARCHAR)+’ ‘+@fieldQuery+’ FROM ‘+@tableQuery+’ WHERE ‘+@whereQuery+’ ORDER BY ‘+@orderQuery   
    24. ELSE  
    25. SET @cmd=’SELECT ‘+@fieldQuery+’ FROM ‘+@tableQuery+’ WHERE ‘+@pageField+’ IN (SELECT TOP ‘+CAST(@itemcount as nvarchar)+’ ‘+@pageField+’ FROM ‘+@tableQuery+’ WHERE ‘+@whereQuery+’ ORDER BY ‘+ @orderQuery+’)   
    26. AND ‘+@pageField+’ NOT IN (SELECT TOP ‘ +CAST(@itemlowwer as nvarchar)+’ ‘+@pageField+’ FROM ‘+@tableQuery+’ WHERE ‘+@whereQuery+’ ORDER BY ‘+ @orderQuery+’)’   
    27. –print @cmd   
    28. EXEC(@cmd)   
    29.   
    30. SELECT DATEDIFF( ms , @bdate , getdate() )   
    31.   
    32. IF @countTotal =1   
    33. BEGIN  
    34. SET @cmd = ‘SELECT COUNT( 0) FROM ‘+@tableQuery+’ WHERE ‘+@whereQuery   
    35. EXEC(@cmd)   
    36. END  
    37. GO   
    38.   
    Hits: 1076  Feedback: 1  标签:MSSQL 存储过程 分页  Trackback  Permalink: http://www.aspstat.com/32