luoweijian 1 month ago
parent
commit
3aaa1f84ce
  1. 22
      src/main/java/com/project/exam/domain/service/impl/SubmitPaperDomainServiceImpl.java

22
src/main/java/com/project/exam/domain/service/impl/SubmitPaperDomainServiceImpl.java

@ -126,11 +126,21 @@ public class SubmitPaperDomainServiceImpl implements SubmitPaperDomainService {
private String formatAnswer(String ans) { private String formatAnswer(String ans) {
if (StrUtil.isBlank(ans)) return ""; if (StrUtil.isBlank(ans)) return "";
// 去空格 -> 转大写 -> 排序(解决 B,A vs A,B 的问题)
return Arrays.stream(ans.split(",")) // 1. 去掉所有干扰字符:逗号、空格、分号、中英文逗号等
.map(String::trim) // 使用正则表达式替换掉所有非字母数字的字符
.map(String::toUpperCase) String cleanAns = ans.replaceAll("[^a-zA-Z0-9]", "");
.sorted()
.collect(Collectors.joining(",")); // 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"
} }
} }

Loading…
Cancel
Save