From 50fe0f4fcece58837f5d80be9493fc5f7b65a61e Mon Sep 17 00:00:00 2001 From: Looly Date: Sun, 17 Jul 2022 00:38:22 +0800 Subject: [PATCH] add methods --- .../java/cn/hutool/core/regex/ReUtil.java | 24 ++++++++++++++++--- .../java/cn/hutool/core/util/PageUtil.java | 17 +++++++++++-- .../java/cn/hutool/core/util/ReUtilTest.java | 2 +- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/regex/ReUtil.java b/hutool-core/src/main/java/cn/hutool/core/regex/ReUtil.java index 1012f0309..912e34fb5 100755 --- a/hutool-core/src/main/java/cn/hutool/core/regex/ReUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/regex/ReUtil.java @@ -206,19 +206,37 @@ public class ReUtil { * @return 匹配后得到的字符串数组,按照分组顺序依次列出,未匹配到返回空列表,任何一个参数为null返回null * @since 4.0.13 */ - public static List getAllGroups(final Pattern pattern, final CharSequence content, final boolean withGroup0) { + public static List getAllGroups(Pattern pattern, CharSequence content, boolean withGroup0) { + return getAllGroups(pattern, content, withGroup0, false); + } + + /** + * 获得匹配的字符串匹配到的所有分组 + * + * @param pattern 编译后的正则模式 + * @param content 被匹配的内容 + * @param withGroup0 是否包括分组0,此分组表示全匹配的信息 + * @param findAll 是否查找所有匹配到的内容,{@code false}表示只读取第一个匹配到的内容 + * @return 匹配后得到的字符串数组,按照分组顺序依次列出,未匹配到返回空列表,任何一个参数为null返回null + * @since 4.0.13 + */ + public static List getAllGroups(Pattern pattern, CharSequence content, boolean withGroup0, boolean findAll) { if (null == content || null == pattern) { return null; } - final ArrayList result = new ArrayList<>(); + ArrayList result = new ArrayList<>(); final Matcher matcher = pattern.matcher(content); - if (matcher.find()) { + while (matcher.find()) { final int startGroup = withGroup0 ? 0 : 1; final int groupCount = matcher.groupCount(); for (int i = startGroup; i <= groupCount; i++) { result.add(matcher.group(i)); } + + if(false == findAll){ + break; + } } return result; } diff --git a/hutool-core/src/main/java/cn/hutool/core/util/PageUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/PageUtil.java index 5b84d98d0..7753135cc 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/PageUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/PageUtil.java @@ -174,11 +174,24 @@ public class PageUtil { * @param pageSize 每页数 * @return 总页数 */ - public static int totalPage(final int totalCount, final int pageSize) { + public static int totalPage(int totalCount, int pageSize) { + return totalPage((long) totalCount, pageSize); + } + + /** + * 根据总数计算总页数 + * + * @param totalCount 总数 + * @param pageSize 每页数 + * @return 总页数 + * @since 5.8.5 + */ + public static int totalPage(long totalCount, int pageSize) { if (pageSize == 0) { return 0; } - return totalCount % pageSize == 0 ? (totalCount / pageSize) : (totalCount / pageSize + 1); + return Math.toIntExact(totalCount % pageSize == 0 + ? (totalCount / pageSize) : (totalCount / pageSize + 1)); } /** diff --git a/hutool-core/src/test/java/cn/hutool/core/util/ReUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/ReUtilTest.java index 5060ad10b..11c0de80d 100755 --- a/hutool-core/src/test/java/cn/hutool/core/util/ReUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/ReUtilTest.java @@ -111,7 +111,7 @@ public class ReUtilTest { @Test public void replaceAllTest2() { //此处把1234替换为 ->1234<- - final String replaceAll = ReUtil.replaceAll(this.content, "(\\d+)", parameters -> "->" + parameters.group(1) + "<-"); + final String replaceAll = ReUtil.replaceAll(content, "(\\d+)", parameters -> "->" + parameters.group(1) + "<-"); Assert.assertEquals("ZZZaaabbbccc中文->1234<-", replaceAll); }