以Css文件为例, 为了能准确地定位,需要把段注释也要替换成空行,网上有现成的实现,不过有问题,对于段注释不能保持原来的行。于是自己写了一个实现。
package test;
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils;
/*
* Java实现将源文件中的注释替换成空行。
*
* 以Css文件为例, 为了能准确地定位,需要把段注释也要替换成空行,网上有现成的实现,不过有问题,对于段注释不能保持原来的行。于是自己写了一个实现。
*
* 1, Java读系统的行分隔符: System.getProperty("line.separator"), 并用此计算行号。
* 2, 最小化匹配正规表达式的写法,下面String类型pattern里的第二个问号。
* 3, 正规表达式的替换。
*/
public class CommontReplace {
static String pattern = "(?s)/\\*.*?\\*/";
public static void main(String[] args) throws Exception{
File f = new File("commonReplace/test/CommontReplace.java");
String content = FileUtils.readFileToString(f, "UTF-8");
content = replace(content);
System.out.println("content: \n" + content);
}
/* fdas; */
public static String replace(String content) throws Exception {
Pattern p = Pattern.compile(pattern,Pattern.CASE_INSENSITIVE);
Matcher m=p.matcher(content);
StringBuffer sb=new StringBuffer();
while (m.find()) {
String comment = m.group();
String replacement = createBlankLines(getLineNum(comment));
m.appendReplacement(sb, replacement);
}
m.appendTail(sb);
return sb.toString();
}
private static int getLineNum(String content) {
String[] splitted = content.split(System.getProperty("line.separator"));
return splitted.length;
}
private static String createBlankLines(int lineNums) {
String lineSep = System.getProperty("line.separator");
StringBuilder result = new StringBuilder();
for(int i=0;i<lineNums -1 ;i++) {
result.append(lineSep + " ");
}
return result.toString();
}
}
分享到:
相关推荐
本文实例讲述了Python删除Java源文件中全部注释的实现方法。分享给大家供大家参考,具体如下: 同事想删除一个Java项目中的全部注释,让我帮忙想想办法。 没找不到合适工具,就写了这个脚本,遍历指定目录,查找*....
在编程世界里,统计代码中的空行、注释行和代码行是一项常见的任务,它有助于理解代码结构,评估代码质量,以及进行性能分析。这里我们关注的是如何使用Java语言,结合正则表达式来实现这样的统计功能。正则表达式...
例如,可以遍历每个Java源文件,对每行进行检查,用特定的模式匹配并替换注释部分。这种方法需要处理各种注释形式,并确保不破坏代码结构。 2. **编译器参数**:Java的javac编译器提供了`-g:none`选项,可以不生成...
然后,我们可以遍历Java源文件,逐行检查每行内容是否匹配上述正则表达式,通过计数器来记录每种类型行的数量。 下面是一个简单的`CodeCount`类实现示例: ```java import java.io.File; import java.io....
在Linux环境中,编写和执行Shell脚本是一种常见的自动化任务手段,尤其在处理源代码时,例如去除源码中的注释。本文将详细讲解如何利用Shell脚本来实现这一功能。 首先,一个基本的Shell脚本应该以`#!/bin/bash`...
- **Comment**: “comment”特指实现的注释(implementation comments),在Google编程规范中,“documentation comments”一词被替换为“Javadoc”。 #### 2. 源文件基础 **2.1 文件名** - 源文件的命名需严格遵循...
1. 文件注释:每个源文件顶部都应有文件说明,包括文件目的、功能、作者及修改历史等。 2. 类注释:描述类的功能、用途以及与其他类的关系。 3. 函数注释:解释函数的作用、参数和返回值,必要时包含示例或注意事项...
3. **去除不必要的空行和注释**:AStyle能检测并删除多余的空行,同时保留必要的空白以保持代码的可读性。它还能处理多行注释的缩进,使其整齐排列。 4. **修复代码结构**:对于不正确的嵌套或未闭合的括号,AStyle...
5. **查看结果**:格式化完成后,原始文件会被重命名为备份文件(通常带有原始扩展名的".orig"后缀),新的格式化后的文件会替换原有的源文件。如果你对格式化结果不满意,可以通过恢复备份文件来撤销操作。 **注意...
NetBeans 7.2 是一款强大的Java集成开发环境(IDE),它提供了许多便捷的快捷键以提高开发效率。以下是一些关键的快捷键及其功能详解: 1. **完成代码:Ctrl+\** 这个快捷键在你输入代码时会提供智能提示,帮助你...
- **用途**:将重复代码块封装成独立的方法。 - **应用场景**:提高代码复用性和可维护性。 **3. 修改函数结构(Alt+Shift+C)** - **用途**:调整方法参数、返回类型等。 - **应用场景**:优化方法设计,增强...
Eclipse是一款广泛使用的Java集成开发环境,其丰富的快捷键功能极大地提高了开发效率。以下是对标题和描述中提及的Eclipse快捷键的详细说明: 1. **Ctrl+Q**:此快捷键可以快速定位到最后一次编辑的地方,对于频繁...
这是一种常见的重构场景,主要用于将重复的代码段抽取成独立的方法。 - **Alt+Shift+C**:修改函数结构。当需要调整函数参数或返回类型时,此快捷键非常有用。 - **Alt+Shift+L**:抽取本地变量。这有助于减少所谓的...