屋顶上的木帷幕

海鸥之所以追着渔船飞,是因为它们认为会有沙丁鱼抛向大海 - Eric Cantona, 1995
随笔 - 146, 评论 - 3168, 引用 - 56

导航

工具

关于


标签

每月存档

广告



访客

 

这篇随笔没什么技术含量,就是记录了一个程序员在平凡工作中的一朵小浪花。

今天在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

留言反馈

re: 去掉代码文件里讨厌的空行 编辑
to Jian Wu:
果然无知者无畏。请自行google
cedet
jdee
Xrefactory
2006-03-08 03:32:00 | [匿名用户:cm4ever]
我替换后的结果 编辑
我在ASP里把 "\n"替换成"这里以前是换行"
结果如下:“
<TABLE height=68 >这里以前是换行
<TBODY>

以上结果中仍然给我加了一个换行。没有达到我的预期目的。我以为替换以后的结果是连接上下两行
2005-11-30 13:05:00 | [匿名用户:leoxin]
我想用正则来替换结果失败 编辑
我想用正则来替换结果失败
我把 "\n"替换成" " 但是结果里仍然是有换行的
不知道哪里有错误。请前辈指点!
2005-11-30 12:58:00 | [匿名用户:leoxin]
re: 去掉代码文件里讨厌的空行 编辑
vi里只要一行:%g/^$/d就搞定了
2005-04-01 16:04:00 | [匿名用户:test]
re: 去掉代码文件里讨厌的空行 编辑
我也习惯代码功能段之间用三行空行,呵呵,那样看起来功能分割比较清晰:)
2004-10-18 15:52:00 | [匿名用户:senjury]
re: 去掉代码文件里讨厌的空行 编辑
替换 \n\n 为 \n
2004-10-15 09:14:00 | [匿名用户:yayv]
re: 去掉代码文件里讨厌的空行 编辑
即使写程序解决,我也觉得用正则比较好,代码比较精巧,雅致.
2004-10-14 17:16:00 | [匿名用户:xxx]
re: 去掉代码文件里讨厌的空行 编辑
to 于晓松,你的那个正则是在UNIX平台上测试的吧? windows上一般的文本文件换行符是\r\n

to mvm,你不熟正则?我看你以前的blog里什么分析网页,.net疑难解答什么的都有用正则的啊
2004-10-14 17:10:00 | [匿名用户:xxx]
re: 去掉代码文件里讨厌的空行 编辑
code insight refactor 之类的Emacs做到天上也比较难做出来
我还是用我的Eclipse,不幻想Emacs也能写出省心的Java来
Emacs留给C时代去吧
2004-10-13 14:43:00 | [匿名用户:Jian Wu]
re: 去掉代码文件里讨厌的空行 编辑
UE 里 Ctrl + R,把“^p^p”替换成"^p"
2004-10-12 10:04:00 | [匿名用户:Pt]
re: 去掉代码文件里讨厌的空行 编辑
mvm 实际上ATC有ue的license,你去itg申请一个就可以了,另外,要替换回车的话,ue和word都可以用^p来替换,例如replace ^p^p with ^p
2004-10-12 09:44:00 | [匿名用户:jeric]
re: 去掉代码文件里讨厌的空行 编辑
alpha:
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里面,然后多复制几次,这样子的代码看起来会舒服么?所以需要把空行去掉

2004-10-12 09:37:00 | [匿名用户:mvm]
re: 去掉代码文件里讨厌的空行 编辑
mvm:
如果是高手写的程序,空行必定有其道理。
如果是菜鸟写的程序,就算去掉空行也没意义,这是代码管理问题。相信程序本身比多出的那几行空行问题更多。

另外sed,awk这些东西都是很有用的,记住了就是记住了,以后是不会忘记的,谈不上cost问题。就好像emacs,用惯了以后,是不可能对vs之流的ide产生幻想的。
2004-10-11 23:21:00 | [匿名用户:alpha]
re: 去掉代码文件里讨厌的空行 编辑
某些情况下 UE 的 column mode 不是一般的有用……
真希望vs.net以后也能提供类似的功能 :)
2004-10-11 22:15:00 | [匿名用户:bedazzle]
re: 去掉代码文件里讨厌的空行 编辑
不会吧?我怎么用起来就没有问题呢?难道博客园那边做了什么改进?
2004-10-11 21:49:00 | [匿名用户:sumtec]
re: 去掉代码文件里讨厌的空行 编辑
ue32 is very cheap tools, and I also like to use edit plus.
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.:)
2004-10-11 20:06:00 | [匿名用户:Jian Wu]
re: 去掉代码文件里讨厌的空行 编辑
太好了!回复很精彩,我以前只会用正则,:(又长了见识...
2004-10-11 18:27:00 | [匿名用户:guoshuang]
re: 去掉代码文件里讨厌的空行 编辑
写小程序解决自己工作中的大麻烦是程序员的好习惯
2004-10-11 18:16:00 | [匿名用户:peczar]
re: 去掉代码文件里讨厌的空行 编辑
ultraedit32也可以用正则表达式的
2004-10-11 15:49:00 | [匿名用户:◎]
re: 去掉代码文件里讨厌的空行 编辑
unix下用sed也可以一行搞定的,我大学时候这个最拿手了,还有些awk。唉,有些东西,学会并保持记住的成本要大于大于用它能节省下来的成本。

关于空行,你试试看每两行之间空3行的代码?那也没法读。
2004-10-11 15:35:00 | [匿名用户:mvm]
re: 去掉代码文件里讨厌的空行 编辑
1. unix下面一行命令就可搞定。emacs一行宏+设置一下快捷键。
2. 空行是应该保留的。没有空行的程序简直无法阅读。
2004-10-11 15:15:00 | [匿名用户:alpha]
re: 去掉代码文件里讨厌的空行 编辑
我不用ultraedit的 :D

因为我没钱买。如果用那种keygen,公司不允许的,也不大好 :D
2004-10-11 14:41:00 | [匿名用户:mvm]
re: 去掉代码文件里讨厌的空行 编辑
ultraedit32可以选中换行符的。只要用鼠标从一行结尾扫到下一行开头,再按Ctrl+R,“Find What”里面虽然是空的,但实际上已经包含了换行符了。然后你就可以把换行替换成你希望的字符串。

这样去掉空行的操作就可以简化为两次替换操作
2004-10-11 14:39:00 | [匿名用户:bedazzle]
re: 去掉代码文件里讨厌的空行 编辑
好像写错了url,真是越来越头晕了。
2004-10-11 13:09:00 | [匿名用户:@_@]
re: 去掉代码文件里讨厌的空行 编辑
其实用ultraedit32也是很简单的,在16进制编辑下,把两个0d 0a替换成一个,重复几次就可以了,还可以对目录下的多个文件操作。
2004-10-11 13:07:00 | [匿名用户:@_@]
re: 去掉代码文件里讨厌的空行 编辑
知道VS.NET可以用正则表达式替换,
但......:$,对我来说,正则表达式比自己写段code费事....

一直没机会好好操练操练regexp....
2004-10-11 12:28:00 | [匿名用户:mvm]
re: 去掉代码文件里讨厌的空行 编辑
我随手写了一个,效果还可以:

([\t ]*\n)+
替换为
\n
2004-10-11 12:19:00 | [匿名用户:于晓松]
re: 去掉代码文件里讨厌的空行 编辑
VS.NET里面替换功能可以用正则表达式啊,比这个简单多了吧。
2004-10-11 12:15:00 | [匿名用户:于晓松]
re: 去掉代码文件里讨厌的空行 编辑
没空行的程序多难看,我通常都有40%空行的!
(也许是在VB里养成的习惯,VB的语句长,如果没有空行就显得挤在一起)
2004-10-11 12:05:00 | [匿名用户:Ninputer]
博客主人设置本博客不允许匿名用户发表言论,请登录后再试

Powered by: Joycode MVC Blogger System