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
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();
|
|
}
|
|
}
|