提供一个思路,但是不是满分
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Markdown {
static Scanner sc;
static List<String> list;
static List<String> input;
static String line;
static int check;
static int precheck;
public static void main(String[] args) {
sc = new Scanner(System.in);
list = new ArrayList<>();
input = new ArrayList<>();
while (sc.hasNextLine()) {
line = sc.nextLine();
input.add(line);
}
deal();
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
}
public static void deal() {
String str = "";
for (int i = 0; i < input.size(); i++) {
// 需要对段落进行处理
if (input.get(i).length() != 0 && !input.get(i).contains("#") && !input.get(i).contains("*")) {
if((i+1)<input.size()) {
while ((i+1)<input.size()&&input.get(i + 1).length() != 0) {
str += input.get(i)+"\n";
i++;
}
}
str += input.get(i);
} else if (input.get(i).length() != 0) {
str = input.get(i);
} else
str = "";
if (str.length() != 0) {
switch (str.charAt(0)) {
case '#':
// 表示碰到了标题
if (check != 0) {
list.add("</ul>");
}
check = 0;
title(str);
break;
case '*':
// 表示碰到了无序列表
check++;
if (check == 1) {
list.add("<ul>");
}
noorderlist(str);
break;
default:
if (check != 0) {
list.add("</ul>");
}
check = 0;
pragh(str); // 表示碰到了段落
break;
}
}
}
//表示如果最后一行是无序列表的话 应该加上</ul>
if(input.get(input.size()-1).contains("*")) {
list.add("</ul>");
}
}
// 标题的处理
public static void title(String line) {
int count = 0;
int index = 0;
for (int i = 0; i < line.length(); i++) {
if (line.charAt(i) == '#') {
// 计算出这一行包含了多少个#
count++;
index = i;// 记录#到什么时候结束
} else {
break;
}
}
line = line.substring(index + 2);
line = "<h" + (count) + ">" + line + "</h" + (count) + ">";
list.add(line);
}
// 无序列表的处理
public static void noorderlist(String line) {
line = line.substring(2);
line = "<li>" + line + "</li>";
list.add(line);
}
// 段落的处理 段落中包含了两种格式
public static void pragh(String line) {
// 表示如果里面包含了强调
while (line.contains("_")) {
int index1 = line.indexOf("_");
int index2 = line.lastIndexOf("_");
line = line.substring(0, index1) + "<em>" + line.substring(index1 + 1, index2) + "</em>"
+ line.substring(index2 + 1);
}
while(line.contains("[") && line.contains("]") && line.contains("(") && line.contains(")")) {
// 表示如果里面包含了超链接
int index1 = line.indexOf("[");
int index2 = line.indexOf("]");
int index3 = line.indexOf("(");
int index4 = line.indexOf(")");
String link = line.substring(index3 + 1, index4);
String text = line.substring(index1 + 1, index2);
line = line.substring(0, index1) + "<a href=\"" + link + "\">" + text + "</a>" + line.substring(index4 + 1);
}
line = "<p>" + line + "</p>";
list.add(line);
}
}