版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sword_anyone/article/details/89183527
超文本标记语言(即HTML),是用于描述网页文档的一种标记语言。
HTML通过文本来描述文档显示出来应该具有的“样子”。它主要通过标签来定义对象的显示属性或行为。
如果把java的源文件直接拷贝到HTML文档中,用浏览器直接打开,会发现本来整齐有序的源文件变成了一团遭。
这是因为,文本中的许多回车和空格都被忽略了。而有些符号在html中有特殊的含义,引起了更复杂的局面。
为了源文件能正常显示,我们必须为文本加上适当的标签。对特殊的符号进行转义处理。
常用的有:
HTML 需要转义的实体:
& —>&
空格 —>
< —><
--->>
" —> "
此外,根据源码的特点,可以把 TAB 转为4个空格来显示。
TAB —>
为了显示为换行,需要在行尾加
标签。
为了显示美观,对关键字加粗显示,即在关键字左右加标签。比如:
public
对单行注释文本用绿色显示,可以使用标签,形如:
//这是我的单行注释!
注意:如果“//”出现在字符串中,则注意区分,不要错误地变为绿色。
不考虑多行注释的问题 /* … / /或/ /* … */
你的任务是:编写程序,把给定的源文件转化为相应的html表达。
package exe11_15;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
public class Exe15 {
public static void main(String[] args) {
InputStream iStream = null;
InputStreamReader isr = null;
BufferedReader br = null;
PrintWriter pw = null;
List<String> xiegan = null;
List<String> maohao = null;
try {
File file = new File("a.txt");
if (!file.exists()) {
file.createNewFile();
}
iStream = new FileInputStream(file);
isr = new InputStreamReader(iStream);
br = new BufferedReader(isr);
File fileout = new File("b.html");
if (!file.exists()) {
file.createNewFile();
}
pw = new PrintWriter(fileout);
String string= br.readLine();
while(string!=null)
{
string = string.replaceAll(" ", " ");
string = string.replaceAll(" ", " ");
string = string+"<br/>";
string = string.replaceAll("public", "<b>public</b>");
xiegan = new ArrayList<String>();
maohao = new ArrayList<String>();
for (int i = 0; i < string.length(); i++) {
int n = string.indexOf("//",i);
if (n==-1)
break;
xiegan.add(n+"");
i = n;
}
for (int i = 0; i < string.length(); i++) {
int pre = string.indexOf("\"",i);
int then = string.indexOf("\"", pre+1);
if (pre==-1)
break;
maohao.add(pre+"");
maohao.add(then+"");
i = then;
}
for (int i = 0; i < xiegan.size(); i++) {
int pre = Integer.parseInt(maohao.get(i*2));
int then = Integer.parseInt(maohao.get(i*2+1));
for (int j = 0; j < xiegan.size(); j++) {
if (Integer.parseInt(xiegan.get(j))>=pre&&
Integer.parseInt(xiegan.get(j))<=then) {
xiegan.remove(j);
maohao.remove(String.valueOf(i*2));
maohao.remove(String.valueOf(i*2+1));
i--;
}
}
}
if (xiegan.size()!=0) {
int n = Integer.parseInt(xiegan.get(0));
string = string.substring(0, n+1)+"<font color=green>"+
string.substring(n+1)+"</font>";
}
pw.write(string);
System.out.println(string);
pw.flush();
string = br.readLine();
}
} catch (Exception e) {
e.printStackTrace();
} finally{
if (pw!=null) {
pw.close();
}
if (br!=null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (isr!=null) { //djfakdjf
try {
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (iStream!=null) {
try {
iStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
支付宝扫红包,让我能够买杯咖啡,继续创作,谢谢大家!