|
|
|
@ -126,11 +126,21 @@ public class SubmitPaperDomainServiceImpl implements SubmitPaperDomainService { |
|
|
|
|
|
|
|
private String formatAnswer(String ans) { |
|
|
|
if (StrUtil.isBlank(ans)) return ""; |
|
|
|
// 去空格 -> 转大写 -> 排序(解决 B,A vs A,B 的问题)
|
|
|
|
return Arrays.stream(ans.split(",")) |
|
|
|
.map(String::trim) |
|
|
|
.map(String::toUpperCase) |
|
|
|
.sorted() |
|
|
|
.collect(Collectors.joining(",")); |
|
|
|
|
|
|
|
// 1. 去掉所有干扰字符:逗号、空格、分号、中英文逗号等
|
|
|
|
// 使用正则表达式替换掉所有非字母数字的字符
|
|
|
|
String cleanAns = ans.replaceAll("[^a-zA-Z0-9]", ""); |
|
|
|
|
|
|
|
// 2. 将字符串拆分为单个字符数组
|
|
|
|
// 例如 "AB" -> ["A", "B"], "A,B" -> ["A", "B"]
|
|
|
|
String[] chars = cleanAns.split(""); |
|
|
|
|
|
|
|
// 3. 流式处理:去重(可选) -> 转大写 -> 排序 -> 拼接
|
|
|
|
return Arrays.stream(chars) |
|
|
|
.filter(StrUtil::isNotBlank) // 过滤掉空字符串
|
|
|
|
.map(String::toUpperCase) // 统一转大写
|
|
|
|
.distinct() // 如果用户不小心输入了 "A,A,B",去重处理
|
|
|
|
.sorted() // 排序,保证 B,A 变 AB
|
|
|
|
.collect(Collectors.joining("")); // 拼接为 "AB"
|
|
|
|
} |
|
|
|
} |
|
|
|
|