源码变换 超文本标记语言(即HTML),是用于描述网页文档的一种标记语言。 HTML通过文本来描述文档显示出来应该具有的“样子”。它主要通过标签来定义对象的显示属性或行为。

/*源码变换
 * 超文本标记语言(即HTML),是用于描述网页文档的一种标记语言。
    HTML通过文本来描述文档显示出来应该具有的“样子”。它主要通过标签来定义对象的显示属性或行为。
    如果把java的源文件直接拷贝到HTML文档中,用浏览器直接打开,会发现本来整齐有序的源文件变成了一团遭。
    这是因为,文本中的许多回车和空格都被忽略了。而有些符号在html中有特殊的含义,引起了更复杂的局面。
    为了源文件能正常显示,我们必须为文本加上适当的标签。对特殊的符号进行转义处理。
    常用的有:
    HTML 需要转义的实体:
    &     --->  &
           空格         --->   
    <     --->  <
    >     --->  >
    "     --->  "
    此外,根据源码的特点,可以把 TAB 转为4个空格来显示。
    TAB   --->      
    为了显示为换行,需要在行尾加<br/>标签。
    为了显示美观,对关键字加粗显示,即在关键字左右加<b>标签。比如:
    <b>public</b>
    对单行注释文本用绿色显示,可以使用<font>标签,形如:
    <font color=green>//这是我的单行注释!</font>
    注意:如果“//”出现在字符串中,则注意区分,不要错误地变为绿色。
    不考虑多行注释的问题 /* .... */ 	/*或*/ 	/** .... */
/*
    你的任务是:编写程序,把给定的源文件转化为相应的html表达。
【输入、输出格式要求】
    与你的程序同一目录下,存有源文件 a.txt,其中存有标准的java源文件。要求编写程序把它转化为b.html。
    例如:目前的 a.txt 文件与 b.html 文件就是对应的。可以用记事本打开b.html查看转换后的内容。用浏览器打开b.html则可以看到显示的效果。
    注意:实际评测的时候使用的a.txt与示例是不同的。  
 */
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.PrintWriter;

public class Demo03 {
	public static String process(String s){
		StringBuffer sb = new StringBuffer();
		char[] c = s.toCharArray();
		for(int i=0;i<c.length;i++){
			switch(c[i]){
			case '&': sb.append("&");	break;
			case ' ': sb.append(" ");	break;
			case '<': sb.append("<");		break;
			case '>': sb.append(">");		break;
			case '"': sb.append(""");	break;
			case '\t': sb.append("    ");	break;
			default: sb.append(c[i]);
			}
		}
		String t = sb.toString();
		t = t.replaceAll("public", "<b>public</b>");
		t = t.replaceAll("class", "<b>class</b>");
		t = t.replaceAll("static", "<b>static</b>");
		t = t.replaceAll("void", "<b>void</b>");
		int n = t.lastIndexOf("//");	// 找到最后边的 "//" 位置
		if(n!=-1){
			String temp = t.substring(n); //为注释 加绿色
			t = t.replaceAll(temp, "<font color=green>"+temp+"</font>");
		}
		t = t+"<br/>\n";
		return t;
	}
	public static void main(String[] args) throws Exception{
		// 定义读取内容
		BufferedReader br = new BufferedReader(new FileReader("a.txt"));
		// 定义输出内容
		PrintWriter pw = new PrintWriter("b.html");
		String s;
		pw.write("<html><body>\n");
		while((s=br.readLine())!=null){
			pw.write(process(s));	// 输出内容
		}
		pw.write("</body></html>");
		br.close();
		pw.close();
		System.out.println("转换成功");
	}
}

a.txt

// 我的工具类
public class MyTool
{
	public static void main(String[] args)
	{
		int a = 100;
		int b = 20;
		if(a>b && true)
			System.out.println(a);
		else
			System.out.println("this! //aaa//kkk");  // 测试注释显示是否正确
	}
}
结果:b.html

 b.html的源码:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值