From 11de98a033390aa76d4006177ac471d894f9adf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= Date: Wed, 24 Jul 2024 17:28:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=87=E9=A2=98=E6=A3=80?= =?UTF-8?q?=E7=B4=A2bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LawsHomeSearchServiceImpl.java | 40 ++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java index b76faa95..a308a8f7 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java @@ -168,16 +168,16 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { select.append("( "); for (int i = 0; i < searchContent.length; i++) { regexp.append(searchContent[i]); - String str = searchContent[i].length() > 1 ? - searchContent[i].substring(0, searchContent[i].length() - 1) : ""; - if(!StringUtils.isEmpty(str)){ - int arr = str.length(); - StringBuilder ss = new StringBuilder(); - for (int i1 = 0; i1 < arr; i1++) { - ss.append("ℵ"); - } - str = ss.toString(); + StringBuilder ss = new StringBuilder(); + if(isNumericAndAlphabetic(searchContent[i])){ + // 英文 数字 + replaceLength(searchContent, i, ss, " "); + }else{ + // 中文 + replaceLength(searchContent, i, ss, " "); + ss.append(" "); } + String str = ss.toString(); select.append(" LENGTH(standard_name) - LENGTH(REPLACE(standard_name, '").append(searchContent[i]) .append("',").append(" '").append(str).append("')) "); if(i != searchContent.length - 1){ @@ -212,6 +212,28 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { return queryWrapper; } + private void replaceLength(String[] searchContent, int i, StringBuilder ss, String s2) { + String str = searchContent[i].length() > 1 ? + searchContent[i].substring(0, searchContent[i].length() - 1) : ""; + if (!StringUtils.isEmpty(str)) { + int arr = str.length(); + for (int i1 = 0; i1 < arr; i1++) { + ss.append(s2); + } + } + } + + /** + * 判断字符串是否全部由数字和英文字符组成 + * @param str 输入的字符串 + * @return 如果字符串只包含数字和英文字符,则返回true,否则返回false + */ + public static boolean isNumericAndAlphabetic(String str) { + // 正则表达式,匹配数字和英文字母 + String pattern = "^[A-Za-z0-9]+$"; + return str.matches(pattern); + } + private void addContent(String searchContent, IPage pageList) { if(CollectionUtils.isEmpty(pageList.getRecords())) { return;