zoukankan      html  css  js  c++  java
  • java实现第三届蓝桥杯源码变换

    源码变换

    这道题因为有一些html语言在编写的时候不会显示出来,所以就用代码格式把题目写出来

    【编程题】(满分22分)
    
        超文本标记语言(即HTML),是用于描述网页文档的一种标记语言。
    
        HTML通过文本来描述文档显示出来应该具有的“样子”。它主要通过标签来定义对象的显示属性或行为。
    
        如果把java的源文件直接拷贝到HTML文档中,用浏览器直接打开,会发现本来整齐有序的源文件变成了一团遭。这是因为,文本中的许多回车和空格都被忽略了。而有些符号在html中有特殊的含义,引起了更复杂的局面。
    
        为了源文件能正常显示,我们必须为文本加上适当的标签。对特殊的符号进行转义处理。
    
        常用的有:
        HTML 需要转义的实体:
        &     --->  &
        空格  --->   
        <     --->  &lt;
        >     --->  &gt;
        "     --->  &quot;
        此外,根据源码的特点,可以把 TAB 转为4个空格来显示。
        TAB   --->  &nbsp;&nbsp;&nbsp;&nbsp;
    
        为了显示为换行,需要在行尾加<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与示例是不同的。    
    
    【注意】
    
        请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
        
        请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。
        
        相关的工程文件不要拷入。
        
        请不要使用package语句。
        
        源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.PrintWriter;
    
    public class Main {
        
        public static String process(String s) {
            StringBuilder t = new StringBuilder("");
            char[] A = s.toCharArray();
            for(int i = 0;i < A.length;i++) {
                if(A[i] == '&')
                    t.append("&amp;");
                else if(A[i] == ' ')
                    t.append("&nbsp;");
                else if(A[i] == '>')
                    t.append("&gt;");
                else if(A[i] == '<')
                    t.append("&lt;");
                else if(A[i] == '"')
                    t.append("&quot;");
                else if(A[i] == '	')
                    t.append("&nbsp;&nbsp;&nbsp;&nbsp;");
                else
                    t.append(A[i]);
            }
            String r = t.toString();
            r = r.replaceAll("public", "<b>public</b>");
            r = r.replaceAll("static", "<b>static</b>");
            r = r.replaceAll("class", "<b>class</b>");
            r = r.replaceAll("void", "<b>void</b>");
            int n = r.lastIndexOf("//");
            if(n != -1) {
                String temp = r.substring(n);
                r = r.replaceAll(temp, "<font color=green>"+temp+"</font>");
            }
            r = r + "<br/>
    ";
            return r;
        }
        
        public static void main(String[] args) throws Exception {
            BufferedReader read = new BufferedReader(new FileReader("a.txt"));
            PrintWriter psw = new PrintWriter("b.html");
            String s;
            psw.write("<html><body>
    ");
            while((s = read.readLine()) != null) {
                psw.write(process(s));
            }
            psw.write("</body></html>");
            read.close();
            psw.close();
            //System.out.println("转换成功!!!");
        }
    }
    
  • 相关阅读:
    C#微信公众号开发 -- (一)开发之前的准备
    C#微信公众号学习
    微信模板消息发送帮助类
    Java平台调用.net开发的WebService报错处理
    sql语句单据编号生成防并发
    [转]实用教程:搭建FTP服务器以实现局域网飞速传输文件
    C# Post Json数据到对方url
    sql语句优化技巧
    Html添加百度地图
    查看CentOS版本
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13076821.html
Copyright © 2011-2022 走看看