记忆盒子

把记忆装进灰色的盒子,封装起来,那年那月,重新拾起。

首页搜索目录
search
当前主题: 软件编程

asp.net如何格式化dos输出的内容 需转换换行符

作者:Kaka    时间:2012-4-18 1:54:0    浏览:    评论:27

      今天在开发时遇到一个问题,就是dos内容直接输出到网页上的时候,并没有换行,也不分段,所有字符密密麻麻连在一起了。比如在dos里执行ping www.webkaka.com的命令,得到的是很整体的可读性很高的输出结果。

 

      但是,如果把这些内容直接复制到网页上,并不会有这样的格式化结果,而是出现如下面的一堆字符,完全不具可读性。

Pinging www.a.shifen.com [220.181.112.143] with 32 bytes of data: Reply from 220.181.112.143: bytes=32 time=43ms TTL=54 Reply from 220.181.112.143: bytes=32 time=44ms TTL=54 Reply from 220.181.112.143: bytes=32 time=43ms TTL=54 Reply from 220.181.112.143: bytes=32 time=43ms TTL=54 Ping statistics for 220.181.112.143: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 43ms, Maximum = 44ms, Average = 43ms

      这就需要程序来进行字符转换。dos输出的结果,主要包含4个不可见字符,分别是回车符、换行符、制表符和空格符

      我们不能轻而易举的直接进行字符替换就能完事,因为那些字符是不可见的,必须通过间接的方式查找出这些字符,然后才可替换掉。

      处理这个问题,我用上了ASCII码,通过ASCII码表,可查出这4个不可见字符的ASCII值分别是回车符(13)、换行符(10)、制表符(9)和空格符(20),现在只需要把dos输出的结果每个字符进行ASCII转换,找出这4个不可见字符,替换成相应的符号即可。其中回车符和换行符均替换为“<br>”,空格符则替换为“&nbsp;”,而制表符替换为三个空格符的HTML代码“&nbsp;”,这样便能格式化这堆密密麻麻的字符串了。

      看看网页输出的格式化结果:

      Pinging www.a.shifen.com [220.181.112.143] with 32 bytes of data: 

      Reply from 220.181.112.143: bytes=32 time=43ms TTL=54 
      Reply from 220.181.112.143: bytes=32 time=44ms TTL=54 
      Reply from 220.181.112.143: bytes=32 time=43ms TTL=54 
      Reply from 220.181.112.143: bytes=32 time=43ms TTL=54 

      Ping statistics for 220.181.112.143: 
         Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), 
      Approximate round trip times in milli-seconds: 
         Minimum = 43ms, Maximum = 44ms, Average = 43ms

      核心程序代码(asp.net):

      1、字符转ASCII值函数

    public static int Asc(string character)
    {
        if (character.Length == 1)
        {
            System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
            int intAsciiCode = (int)asciiEncoding.GetBytes(character)[0];
            return (intAsciiCode);
        }
        else
        {
            throw new Exception("Character is not valid.");
        }
    }

      2、字符替换

      假设dos输出的结果赋给变量strResult,格式化后的结果赋给变量strResultFormat

            for (int i = 0; i < strResult.Length; i++)
            {
                if (Convert.ToInt32(Asc(strResult.Substring(i, 1))) == 13) //回车
                {
                    strResultFormat = strResultFormat + "<br>";
                }
                else if (Convert.ToInt32(Asc(strResult.Substring(i, 1))) == 10) //换行
                {
                    strResultFormat = strResultFormat + "<br>";
                }
                else if (Convert.ToInt32(Asc(strResult.Substring(i, 1))) == 32) //空格
                {
                    strResultFormat = strResultFormat + "&nbsp;";
                }
                else if (Convert.ToInt32(Asc(strResult.Substring(i, 1))) == 9) //制表符(默认是3个空格的长度)
                {
                    strResultFormat  = strResultFormat  + "&nbsp;&nbsp;&nbsp;";
                }
                else
                {
                    strResultFormat  = strResultFormat  + strResult.Substring(i, 1);
                }
            }

      最后,附上完整ASCII码对照表。完整ASCII码对照表.txt

加入本站QQ群(312716741),交流分享网站建设、优化、SEO技术。。。

 

上一篇: 如何判断你买的空间是单线还是双线或多线?
下一篇: webkaka推出网站dns查询工具

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客                   QQ交流群(312716741)

  • 通过Google订阅本站 通过鲜果订阅本站 通过抓虾订阅本站
  • 通过QQ邮箱订阅本站 通过Yahoo订阅本站 通过有道订阅本站

Search

最新评论及回复

最近留言

网站分类

Powered By Z-Blog 1.8 Walle Build 91204 Designed by Han'space

Copyright @2009 All Rights Reserved. 粤ICP备09073737号

Powered By Z-Blog 1.8 Walle Build 91204
Copyright @2009 All Rights Reserved.