asp.net如何格式化dos输出的内容 需转换换行符
今天在开发时遇到一个问题,就是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>”,空格符则替换为“ ”,而制表符替换为三个空格符的HTML代码“ ”,这样便能格式化这堆密密麻麻的字符串了。
看看网页输出的格式化结果:
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
相关新闻>>
- 发表评论
-
- 最新评论 更多>>