package com.wgtgt; import qq.q757225051.utils.FileUtils; public class Main { public static void main(String[] args) { String fileName = "src/aa.js"; char[] chs = FileUtils.readToChars(fileName); StringBuilder sb = new StringBuilder(); boolean yh = false; for (int i = 0; i < chs.length; i++) { String keyWord; String word; if (chs[i] == '/') { keyWord = "//"; word = judgeNext(chs, i, keyWord); if (word == null) { if (i + 1 < chs.length && chs[i + 1] != '*') { sb.append(cast(chs[i])); } } else { sb.append("<span style=\"color:" + util.Count.COLOR_ZHUSHI + ";\">"); if (i + 1 < chs.length && chs[i + 1] == '*') { sb.append(chs[i]); } while (i < chs.length && chs[i] != '\r') { sb.append(cast(chs[i])); i++; } sb.append("</span>"); sb.append("<br>"); continue; } keyWord = "/*"; word = judgeNext(chs, i, keyWord); if (word == null) { sb.append(cast(chs[i])); } else { sb.append("<span style=\"color:" + util.Count.COLOR_ZHUSHI + ";\">"); while (i < chs.length - 1) { if (chs[i] == '*' && chs[i + 1] == '/') { sb.append("*/"); i++; break; } sb.append(cast(chs[i])); i++; } sb.append("</span>"); continue; } } switch (chs[i]) { case 'v': keyWord = "var"; word = judgeBack(chs, i, keyWord); if (word == null) { sb.append(chs[i]); } else { sb.append("<span style=\"color:" + util.Count.COLOR_KEYWORD + ";\">"); sb.append(word); sb.append("</span>"); i = i + keyWord.length() - 1; } break; case 'f': keyWord = "function"; word = judgeBack(chs, i, keyWord); if (word == null) { } else { sb.append("<span style=\"color:" + util.Count.COLOR_KEYWORD + ";\">"); sb.append(word); sb.append("</span>"); i = i + keyWord.length() - 1; break; } keyWord = "for"; word = judgeBack(chs, i, keyWord); if (word == null) { } else { sb.append("<span style=\"color:" + util.Count.COLOR_KEYWORD + ";\">"); sb.append(word); sb.append("</span>"); i = i + keyWord.length() - 1; break; } keyWord = "false"; word = judgeBack(chs, i, keyWord); if (word == null) { } else { sb.append("<span style=\"color:" + util.Count.COLOR_KEYWORD + ";\">"); sb.append(word); sb.append("</span>"); i = i + keyWord.length() - 1; break; } sb.append(chs[i]); break; case 'i': keyWord = "if"; word = judgeBack(chs, i, keyWord); if (word == null) { sb.append(chs[i]); } else { sb.append("<span style=\"color:" + util.Count.COLOR_KEYWORD + ";\">"); sb.append(word); sb.append("</span>"); i = i + keyWord.length() - 1; } break; case 'e': keyWord = "else"; word = judgeBack(chs, i, keyWord); if (word == null) { sb.append(chs[i]); } else { sb.append("<span style=\"color:" + util.Count.COLOR_KEYWORD + ";\">"); sb.append(word); sb.append("</span>"); i = i + keyWord.length() - 1; } break; case 'b': keyWord = "break"; word = judgeBack(chs, i, keyWord); if (word == null) { sb.append(chs[i]); } else { sb.append("<span style=\"color:" + util.Count.COLOR_KEYWORD + ";\">"); sb.append(word); sb.append("</span>"); i = i + keyWord.length() - 1; } break; case 'c': keyWord = "continue"; word = judgeBack(chs, i, keyWord); if (word == null) { sb.append(chs[i]); } else { sb.append("<span style=\"color:" + util.Count.COLOR_KEYWORD + ";\">"); sb.append(word); sb.append("</span>"); i = i + keyWord.length() - 1; } break; case 'w': keyWord = "while"; word = judgeBack(chs, i, keyWord); if (word == null) { sb.append(chs[i]); } else { sb.append("<span style=\"color:" + util.Count.COLOR_KEYWORD + ";\">"); sb.append(word); sb.append("</span>"); i = i + keyWord.length() - 1; } break; case 't': keyWord = "true"; word = judgeBack(chs, i, keyWord); if (word == null) { sb.append(chs[i]); } else { sb.append("<span style=\"color:" + util.Count.COLOR_KEYWORD + ";\">"); sb.append(word); sb.append("</span>"); i = i + keyWord.length() - 1; } break; case '<': sb.append("<"); break; case '>': sb.append(">"); break; case '&': sb.append("&"); break; case ' ': sb.append(" "); break; case '\t': sb.append(" "); break; case '"': if (yh) { sb.append(chs[i]); sb.append("</span>"); yh = false; } else { sb.append("<span style=\"color:"); sb.append(util.Count.COLOR_STRING); sb.append(";\">"); sb.append(chs[i]); yh = true; } break; case '\r': sb.append("<br>"); default: sb.append(chs[i]); break; } } System.out.println(sb.toString()); } public static boolean judgePrev(char[] chs, int index) { if (index < 0) { return true; } else { char ch = chs[index]; if (Character.isLetterOrDigit(ch)) { return false; } else { return true; } } } public static String judgeBack(char[] chs, int index, String keyWord) { char[] chList = keyWord.toCharArray(); if (!judgePrev(chs, index - 1)) { return null; } int len = chs.length; for (int i = 1; i < chList.length; i++) { if (index + i < len && chs[index + i] != chList[i]) { return null; } } return keyWord; } public static String judgeNext(char[] chs, int index, String keyWord) {// 2 if (index + keyWord.length() >= chs.length) { return null; } char[] chList = keyWord.toCharArray(); for (int i = 1; i < chList.length; i++) { if (chs[index + i] != chList[i]) { return null; } } return keyWord; } public static String cast(char ch) { switch (ch) { case '<': return "<"; case '>': return ">"; case '&': return "&"; case '\r': return "<br>"; case ' ': return " "; default: return String.valueOf(ch); } } }
最近下载更多
zhouzhunxing LV1
2017年8月21日
wade123 LV31
2014年7月30日
wangfengjun LV1
2014年7月29日
289647048@qq.com LV2
2014年7月18日
莫欺少年穷Java LV8
2014年6月22日
ll8803268816 LV2
2014年6月21日
veinrein LV27
2014年6月20日
最代码官方 LV168
2014年6月19日
最近浏览更多
3539550597 LV1
7月1日
huilenet LV15
2022年9月5日
3465554242
2022年5月12日
暂无贡献等级
ls2008 LV15
2021年12月23日
zuitest123
2020年7月6日
暂无贡献等级
1207532921 LV1
2019年8月31日
qq1020329140 LV2
2019年1月18日
1211413075 LV14
2019年1月5日
Ganhua LV10
2018年9月11日
没有人-大魔王 LV7
2018年9月7日