`
MouseLearnJava
  • 浏览: 460049 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

网页复制代码去行标

    博客分类:
  • Java
阅读更多
在CSDN或者ITEYE等网站上,如果直接复制代码,复制的代码中可能有多余的行标。

例如:
1.public class MyThread implements Runnable {   
	2.    public void run() {   
	3.        for(int i=0; i<10; i++){   
	4.            System.out.println(Thread.currentThread().getName()+":"+i);   
	5.        }   
	6.    }   
	7.}   
	8.public class MyThreadClient {   
	9.    public static void main(String[] args){   
	10.        Thread t = new Thread(new MyThread());   
	11.        t.start();   
	12.        for(int i=0; i<10; i++){   
	13.            System.out.println(Thread.currentThread().getName()+":"+i);   
	14.            Thread.yield();   
	15.        }   
	16.    }   
	17.}  


本文就是简单实现一个小程序,目的就是去除这些多余的行标信息。

行标的特点空格或者TAB数字点号

根据这个特点,写一个适合这种情况的正则表达式==> ^*\\d{1,}+\\.

此正则表达式只适合上面描述的行标,如果复制的代码拥有的行标特点不一样,则需要调整正则表达式。

小程序代码如下:

一个简单的文件过滤器类,主要用于过滤到没有内容的空文件。

package my.tool.file.convertor;

import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * 
 * 一个简单的文件过滤器,主要用于过滤到没有内容的空文件。
 * 
 * @author Eric
 *
 */
public class EmptyFileFilter implements FileFilter {

	public boolean accept(File pathname) {
		return !isFileEmpty(pathname);
	}

	private boolean isFileEmpty(File file) {
		FileInputStream fis = null;
		boolean flag = true;
		try {
			fis = new FileInputStream(file);
			try {
				if (fis.available() != 0) {
					flag = false;
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (null != fis) {
				try {
					fis.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} finally {
					fis = null;
				}
			}
		}

		return flag;
	}

}


一个用于去除行标的类

package my.tool.file.convertor;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileConvertor {

	private static final String REGEX_LINE_NUMBER = "^*\\d{1,}+\\.";

	public void convert(String srcFolder, String destFolder) {
		for (File file : new File(srcFolder).listFiles(new EmptyFileFilter())) {
			convertFile(file, destFolder);
			System.out.println(file.getName() + " is converted.");
		}
	}

	private void convertFile(File file, String destFolder) {
		BufferedReader br = null;
		BufferedWriter bw = null;
		try {
			br = new BufferedReader(new FileReader(file));
			bw = new BufferedWriter(new FileWriter(new File(destFolder, file
					.getName())));
			String line = null;
			while (null != (line = br.readLine())) {
				bw.write(removeLineNumber(line));
				bw.newLine();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} finally {
					br = null;
				}
			}

			if (null != bw) {
				try {
					bw.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} finally {
					bw = null;
				}
			}
		}
	}

	private String removeLineNumber(String value) {
		value = value.replaceAll(REGEX_LINE_NUMBER, "");
		return value;
	}
}


测试代码:
package my.tool.file.convertor;

public class Main {

	private static final String DESTINATION_FOLDER = "D:\\DestFolder";

	private static final String SOURCE_FOLDER = "D:\\SrcFolder";

	public static void main(String[] args) {

		System.out.println("Source Folder ==> " + SOURCE_FOLDER);
		System.out.println("Destination Folder ==> " + DESTINATION_FOLDER);
		System.out.println("Convert Files start.......");

		long start = System.currentTimeMillis();

		new FileConvertor().convert(SOURCE_FOLDER, DESTINATION_FOLDER);

		long end = System.currentTimeMillis();

		System.out.println("Convert Files end.......");
		System.out.println("Total elapsed time ==> " + (end - start)
				+ "ms");
	}
}


控制台输出结果如下:
Source Folder ==> D:\SrcFolder
Destination Folder ==> D:\DestFolder
Convert Files start.......
MyTest.java is converted.
MyThread.java is converted.
test.txt is converted.
Convert Files end.......
Total elapsed time ==> 37ms

处理前和处理后的文件内容截图如下:
处理前



处理后


  • 大小: 106.8 KB
  • 大小: 90.1 KB
0
4
分享到:
评论

相关推荐

    免费获取网页文本内容或源代码

    有的网页设置了不可复制功能。这个小工具可以不受限制地获取网页中的文本内容,可以选择是否包含网页标签。

    全景点 Wiki 旅游景点网页代码

    全景点Wiki提供旅游景点数据服务,具体方法是复制上面的代码,并且放到您的任何站点,如论坛、商城等等,将代码放到标签之前即可。 但注意不要放在或之前,否则有可能无法显示。 使用上述代码后,您的站点将具备一...

    网页经典代码

    网页经典代码(一) 1.将彻底屏蔽鼠标右键,无右键菜单 也可以用于网页中Table框架中(false)&gt;&lt;td&gt;no 2.取消选取、防止复制 3.不准粘贴 4.防止复制 ;" oncut="return false;"&gt; 5.IE地址栏前换成自己的图标 说明:...

    支持自动切换的tab标签代码

    支持自动切换的tab标签代码,纯js代码,不需要jquery库即可实现 默认3秒钟切换一次,可根据需要做修改 使用方法: ... 2、将 tab标签代码(有说明)复制到你需要的地方,修改下样式即可搞定

    简单介绍HTML5中audio标签的使用

    复制代码代码如下:&lt;audio src=”song.ogg” controls=”controls”&gt;&lt;/audio&gt;2.带有不兼容提醒的代码 复制代码代码如下:&lt;audio src=”song.ogg” controls=”controls”&gt;Your browser does not ...

    HTML5 移动页面自适应手机屏幕四类方法总结

    1、使用meta标签:viewport H5移动端页面自适应普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容...复制代码代码如下: &lt;meta name=”vi

    jquery 一键复制指定内容到剪贴板

    jquery 一键复制指定内容到剪贴板,适合web项目中有一键复制德需求。事件可以绑定到任意指定元素上,非常方便快捷。

    修复网页在IE8 下的显示兼容问题

    IE8在默认情况下是使用全新的标准模式(Standard Mode)显示引擎来显示网页。 如果网页代码还没有标准化, 在IE8下可能会显示不正常。 重写网页代码使之标准...复制代码代码如下:&lt;html&gt; &lt;head&gt; &lt;!– Use

    NinjaWebCoder:使用键盘从stackoverflow复制代码

    使用键盘从网页中提取代码段。 特征: 支持 支持 支持 支持 支持 支持phpBB论坛 支持 支持 支持嵌入在标签中的代码 支持一个嵌入在标签中的衬纸 行号将被自动剥离 在最新的Firefox和Chrome上测试 安装 在Fire...

    CSS失效怎么办?请检查网页最头部是否包含Doctype标签

    复制代码代码如下: &lt;!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt; &lt;!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 ...

    显示flash内容时用的OBJECT和EMBED标签区别介绍

    一、介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签。也就是OBJECT和EMBED标签。OBJECT标签是用于windows平台的IE浏览器的,...复制代码代码如下: &lt;OBJECT classid=”clsid:D27

    懒人原生纯css实现多行文字均保持垂直居中效果

    在实际网页中,如何实现如何实现父容器高度固定,文字可能一行,两行或更多行的垂直居中对齐呢? 实现的关键是把文字当图片处理。 用一个span标签将所有的文字封装起来,设置文字与图片相同的display属性...

    超实用的jQuery代码段

    超实用的jQuery代码段精选近350个jQuery代码段,涵盖页面开发中绝大多数要点、技巧与方法,堪称史上最实用的jQuery代码参考书,可以视为网页设计与网站建设人员的好帮手。《超实用的jQuery代码段》的代码跨平台、跨...

    精易官方免费模块v3.60版

    2.重写“网页_取元素坐标”原命令虽然公开但无效,因为屏蔽了全部代码(代码本身残缺) 故本次属于重写代码,接收参数,改为一个,元素对象,代码简洁,需要更多功能请组合其他命令 3.重写“网页_取域名”增加可空...

    JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】

    老是有些网站会屏蔽你的鼠标右键或者用快捷键复制,其实只是一段js代码,解决的方法就是直接把网页保存下来然后删掉下面这段js代码,然后就可以正常用右键菜单了。 当然,也可以通过设置浏览器的安全级别到最高级别...

    web前端开发取色器

     拷贝:就是把当前采集的颜色代码复制到剪贴板内  粘贴:就是把剪贴板里的颜色代码读出,显示到颜色框内  撤消:就是恢复上次的操作,《好色鬼》可以撤消十次,但颜色不会保存,下次启动后就自动丢失  手工...

    浅蓝色学校网站代码_学校网站模版_学校网站

    3、样式和内容分离:系统主体框架div+css结构,遵循国际最新W3C网页设计标准,兼容IE系列、火狐等主流浏览器,内容和样式分离让网站风格可以轻松修改和更换,而不会导致内容和结构的破坏。 4、周密的安全策略和...

    html网页中meta viewport属性说明

    什么是Viewport 手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤 到很小的窗口中(这样会破坏没有针对手机浏览器优化的...复制代码代码

    css禁止html标签被选中的方法

    以下CSS样式实现了各浏览器...复制代码代码如下:moz-user-select: -moz-none;-moz-user-select: none;-o-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;

    H标记要在网页制作中合理使用

    复制代码代码如下: 主标题,写在这里&lt;/h1&gt; 次标题,写在这里 &lt;/h6&gt; 复制代码代码如下: &lt;!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”&gt; &...

Global site tag (gtag.js) - Google Analytics