記憶盒子

把記憶裝進灰色的盒子,封裝起來,那年那月,重新拾起。

首頁搜索目錄
search
當前主題: 軟件編程

asp.net如何格式化dos輸出的內容 需轉換換行符

作者:Kaka    時間:2012-4-18 1:54:0    瀏覽:    評論:27

      今天在開發時遇到一個問題,就是dos內容直接輸出到網頁上的時候,并沒有換行,也不分段,所有字符密密麻麻連在一起了。比如在dos里執行ping www.zm108.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

標簽: Asp.net  

加入本站QQ群(312716741),交流分享網站建設、優化、SEO技術。。。

 

上一篇: 如何判斷你買的空間是單線還是雙線或多線?
下一篇: webkaka推出網站dns查詢工具
  • 17.花**
  • 還是程序員好啊,可以開發很多有意思的東東啊。
  • 2012-4-27 10:22:24 回復該留言
  • 4.頸****
  • 第一次來看看,學習下。
    無錫會計培訓 于 2012-4-19 0:00:36 回復
    今天迷路到博主這里了,不過收獲不錯,以后會常來
  • 2012-4-18 16:32:22 回復該留言
  • 3.美***
  • ASCII碼對照表出現亂碼
    Kaka 于 2012-4-18 16:13:26 回復
    是個txt文件來的。
  • 2012-4-18 14:31:35 回復該留言
  • 2.汽***
  • 看到那么多的英文代碼,頭都暈了

    博主太專業啦
  • 2012-4-18 11:34:47 回復該留言

發表評論:

◎歡迎參與討論,請在這里發表您的看法、交流您的觀點。

訂閱博客                   QQ交流群(312716741)

  • 通過Google訂閱本站 通過鮮果訂閱本站 通過抓蝦訂閱本站
  • 通過QQ郵箱訂閱本站 通過Yahoo訂閱本站 通過有道訂閱本站

Search

最新評論及回復

最近留言

網站分類

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

Copyright @2009-2019 All Rights Reserved. 粵ICP備14028160號-1

Powered By Z-Blog 1.8 Walle Build 91204
Copyright @2009-2019 All Rights Reserved.
微拍福利