You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.1 KiB

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
public class CommandUtil {
// 命令别名映射
private static Map<String,String> aliasMap;
// URL正则校验
private static final Pattern URL_REG = Pattern.compile("^https?://.+");
static {
aliasMap = new HashMap<>();
// 作业要求:别名 c 代表 crawl
aliasMap.put("c", "crawl");
// 可扩展其他别名
aliasMap.put("h", "history");
aliasMap.put("e", "exit");
}
// 解析别名,返回真实命令
public static String parseAlias(String input) {
String[] arr = input.split(" ", 2);
String cmd = arr[0];
// 如果有别名就替换
if(aliasMap.containsKey(cmd)){
cmd = aliasMap.get(cmd);
}
// 拼接参数
if(arr.length > 1){
return cmd + " " + arr[1];
}
return cmd;
}
// 校验URL是否合法
public static boolean checkUrl(String url) {
if(url == null || url.isBlank()) return false;
return URL_REG.matcher(url).matches();
}
}