这篇随笔没什么技术含量,就是记录了一个程序员在平凡工作中的一朵小浪花。
今天在review一些code,有些文件在每两行代码中间有三行空行,看上去非常“稀疏”,用肉眼看起来很不爽。估计多半是在各种编辑器以及Word、Frontpage、Web page等之间来回拷贝的原因。试了试Notepad和VS.NET,好像都不能把这些讨厌的空行快速的一次性的去掉。于是就自己写了一个程序:
using System; using System.IO; namespace RemoveBlankLine { class RemoveBlankLineApp { static void Main(string[] args){ if(args.Length!=1){ Console.WriteLine("Usage: RemoveBlankLine.exe mycode.cs"); } else { StreamReader reader=null; StreamWriter writer=null; try { reader=new StreamReader(args[0]); writer=new StreamWriter("new."+args[0],false); string line=reader.ReadLine(); while(line!=null){ if(line.Trim().Length>0){ writer.WriteLine(line); } line=reader.ReadLine(); } } catch(Exception e){ Console.Write("Exit with error.\r\n\r\n"+e.ToString()); } finally{ if(reader!=null){ reader.Close(); } if(writer!=null){ writer.Close(); } } } } } }
直接用csc编译成exe就可以在命令行运行了。写写也就几分钟时间,想比起找其他Editor工具或者用正则表达式来替换等等其他方案,这肯定是最快最省事的。以后要是有人也遇到需要去掉代码里面讨厌的空行,就可以用我这个小工具。
另外,这段代码贴的时候是用CSharpFriends上的一个Code Highlighter来着色的。如果在Google里面搜索“Code Highlighter”,它是排在第一个的。排名第四的是sumtec曾经提到过的Actipro Software公司出的CodeHighlighter,免费的,而且做出来的效果是最好的。但不知道为什么,我把经过它处理后得到的HTML Code贴到博课堂的随笔来的时候,换行全丢了,所以就换用CSharpFriends上的那个Highlighter了。另一件奇怪的事情是,搜索结果的第五条是一篇标题为《Webpropaganda: Code Highlighter》的Blog文章,但点进去看,文章没有任何内容。不知道为什么排名这么高。
打印 | 张贴于 2004-10-11 11:19:00 | Tag:Dot NET

留言反馈
果然无知者无畏。请自行google
cedet
jdee
Xrefactory
结果如下:“
<TABLE height=68 >这里以前是换行
<TBODY>
”
以上结果中仍然给我加了一个换行。没有达到我的预期目的。我以为替换以后的结果是连接上下两行
我把 "\n"替换成" " 但是结果里仍然是有换行的
不知道哪里有错误。请前辈指点!
to mvm,你不熟正则?我看你以前的blog里什么分析网页,.net疑难解答什么的都有用正则的啊
我还是用我的Eclipse,不幻想Emacs也能写出省心的Java来
Emacs留给C时代去吧
again, "在每两行代码中间有三行空行"。我们没有在同一个地方讨论东西。
想想一下代码是这个样子的:
if(args.Length!=1){
Console.WriteLine("Usage: RemoveBlankLine.exe mycode.cs");
}
else
{
StreamReader reader=null;
StreamWriter writer=null;
try
{
reader=new StreamReader(args[0]);
writer=new StreamWriter("new."+args[0],false);
string line=reader.ReadLine();
while(line!=null){
if(line.Trim().Length>0){
writer.WriteLine(line);
}
line=reader.ReadLine();
}
}
把这段code copy到notepad或者vs里面,然后多复制几次,这样子的代码看起来会舒服么?所以需要把空行去掉
如果是高手写的程序,空行必定有其道理。
如果是菜鸟写的程序,就算去掉空行也没意义,这是代码管理问题。相信程序本身比多出的那几行空行问题更多。
另外sed,awk这些东西都是很有用的,记住了就是记住了,以后是不会忘记的,谈不上cost问题。就好像emacs,用惯了以后,是不可能对vs之流的ide产生幻想的。
真希望vs.net以后也能提供类似的功能 :)
UE can support block write char, so I can key in the same char in column mode.
Edit plus does not support it, but it do well with block copy and paste.:)
关于空行,你试试看每两行之间空3行的代码?那也没法读。
2. 空行是应该保留的。没有空行的程序简直无法阅读。
因为我没钱买。如果用那种keygen,公司不允许的,也不大好 :D
这样去掉空行的操作就可以简化为两次替换操作
但......:$,对我来说,正则表达式比自己写段code费事....
一直没机会好好操练操练regexp....
把
([\t ]*\n)+
替换为
\n
(也许是在VB里养成的习惯,VB的语句长,如果没有空行就显得挤在一起)