From c29ea7ce0f6064aca2ddbea2413c73f77066cc9a Mon Sep 17 00:00:00 2001 From: Kimi Liu <839536@qq.com> Date: Fri, 8 Jul 2022 10:29:15 +0800 Subject: [PATCH 01/19] bug fix and added birthday support --- .../java/org/aoju/bus/core/date/Almanac.java | 85 ++- .../org/aoju/bus/core/lang/Validator.java | 607 +++++++++--------- 2 files changed, 387 insertions(+), 305 deletions(-) diff --git a/bus-core/src/main/java/org/aoju/bus/core/date/Almanac.java b/bus-core/src/main/java/org/aoju/bus/core/date/Almanac.java index c32133afaf..ece1f37e6b 100644 --- a/bus-core/src/main/java/org/aoju/bus/core/date/Almanac.java +++ b/bus-core/src/main/java/org/aoju/bus/core/date/Almanac.java @@ -28,8 +28,10 @@ import org.aoju.bus.core.exception.InstrumentException; import org.aoju.bus.core.lang.Fields; import org.aoju.bus.core.lang.Normal; +import org.aoju.bus.core.lang.RegEx; import org.aoju.bus.core.lang.Symbol; import org.aoju.bus.core.toolkit.ArrayKit; +import org.aoju.bus.core.toolkit.DateKit; import org.aoju.bus.core.toolkit.StringKit; import java.text.DateFormat; @@ -4414,42 +4416,101 @@ public static boolean isExpiry(YearMonth yearMonth) { /** * 判断是否过期,(输入年月小于当前年月) * - * @param yearMonthStr 年月字符串,格式: yyyy-MM + * @param value 年月字符串,格式: yyyy-MM * @return boolean */ - public static boolean isExpiry(String yearMonthStr) { - YearMonth yearMonth = YearMonth.parse(yearMonthStr); + public static boolean isExpiry(String value) { + YearMonth yearMonth = YearMonth.parse(value); return isExpiry(yearMonth); } + /** + * 验证是否为生日 + * 只支持以下几种格式: + *
null
- */
- public static boolean isNotNull(Object value) {
- return null != value;
- }
-
- /**
- * 验证是否为空
- * 对于String类型判定是否为empty(null 或 "")
- *
- * @param value 值
- * @return 是否为空
- */
- public static boolean isEmpty(Object value) {
- return (null == value || (value instanceof String && StringKit.isEmpty((String) value)));
- }
-
- /**
- * 验证是否为非空
- * 对于String类型判定是否为empty(null 或 "")
- *
- * @param value 值
- * @return 是否为空
- */
- public static boolean isNotEmpty(Object value) {
- return false == isEmpty(value);
- }
-
- /**
- * 给定值是否为{@code true}
- *
- * @param value 值
- * @return 是否为true
- */
- public static boolean isTrue(boolean value) {
- return value;
- }
-
- /**
- * 给定值是否不为{@code false}
- *
- * @param value 值
- * @return 是否不为false
- */
- public static boolean isFalse(boolean value) {
- return false == value;
- }
-
- /**
- * 验证是否为英文字母 、数字和下划线
- *
- * @param value 值
- * @return 是否为英文字母 、数字和下划线
- */
- public static boolean isGeneral(CharSequence value) {
- return isMatchRegex(RegEx.GENERAL, value);
- }
-
- /**
- * 验证是否为给定最小长度的英文字母 、数字和下划线
- *
- * @param value 值
- * @param min 最小长度,负数自动识别为0
- * @return 是否为给定最小长度的英文字母 、数字和下划线
- */
- public static boolean isGeneral(CharSequence value, int min) {
- return isGeneral(value, min, 0);
- }
-
- /**
- * 验证是否为给定长度范围的英文字母 、数字和下划线
- *
- * @param value 值
- * @param min 最小长度,负数自动识别为0
- * @param max 最大长度,0或负数表示不限制最大长度
- * @return 是否为给定长度范围的英文字母 、数字和下划线
- */
- public static boolean isGeneral(CharSequence value, int min, int max) {
- if (min < 0) {
- min = 0;
- }
- String reg = "^\\w{" + min + Symbol.COMMA + max + "}$";
- if (max <= 0) {
- reg = "^\\w{" + min + ",}$";
- }
- return isMatchRegex(reg, value);
- }
-
- /**
- * 通过正则表达式验证
- *
- * @param regex 正则
- * @param value 值
- * @return 是否匹配正则
- */
- public static boolean isMatchRegex(String regex, CharSequence value) {
- return PatternKit.isMatch(regex, value);
- }
-
- /**
- * 通过正则表达式验证
- *
- * @param pattern 正则模式
- * @param value 值
- * @return 是否匹配正则
- */
- public static boolean isMatchRegex(Pattern pattern, CharSequence value) {
- return PatternKit.isMatch(pattern, value);
- }
-
- /**
- * 验证是否相等
- * 当两值都为null返回true
- *
- * @param t1 对象1
- * @param t2 对象2
- * @return 当两值都为null或相等返回true
- */
- public static boolean equal(Object t1, Object t2) {
- return ObjectKit.equal(t1, t2);
- }
-
/**
* 检查指定值是否为{@code null}
*
@@ -193,6 +66,16 @@ public static null
+ */
+ public static boolean isNotNull(Object value) {
+ return null != value;
+ }
+
/**
* 检查指定值是否非{@code null}
*
@@ -210,6 +93,17 @@ public static true
+ */
+ public static boolean isTrue(boolean value) {
+ return value;
+ }
+
/**
* 检查指定值是否为{@code true}
*
@@ -260,6 +175,16 @@ public static boolean validateTrue(boolean value, String errorMsgTemplate, Objec
return true;
}
+ /**
+ * 给定值是否不为{@code false}
+ *
+ * @param value 值
+ * @return 是否不为false
+ */
+ public static boolean isFalse(boolean value) {
+ return false == value;
+ }
+
/**
* 检查指定值是否为{@code false}
*
@@ -276,6 +201,18 @@ public static boolean validateFalse(boolean value, String errorMsgTemplate, Obje
return false;
}
+ /**
+ * 验证是否相等
+ * 当两值都为null返回true
+ *
+ * @param t1 对象1
+ * @param t2 对象2
+ * @return 当两值都为null或相等返回true
+ */
+ public static boolean equal(Object t1, Object t2) {
+ return ObjectKit.equal(t1, t2);
+ }
+
/**
* 验证是否相等,不相等抛出异常
*
@@ -337,205 +274,268 @@ public static void validateNotEmptyAndNotEqual(Object t1, Object t2, String erro
}
/**
- * 通过正则表达式验证
- * 不符合正则抛出{@link ValidateException} 异常
+ * 判断字符串是否全部为大写字母
+ *
+ * @param value 值
+ * @return 是否全部为大写字母
+ */
+ public static boolean isUpperCase(CharSequence value) {
+ return StringKit.isAllCharMatch(value, Character::isUpperCase);
+ }
+
+ /**
+ * 验证字符串是否全部为大写字母
*
* @param + * 第一部分:登记管理部门代码1位 (数字或大写英文字母) + * 第二部分:机构类别代码1位 (数字或大写英文字母) + * 第三部分:登记管理机关行政区划码6位 (数字) + * 第四部分:主体标识码(组织机构代码)9位 (数字或大写英文字母) + * 第五部分:校验码1位 (数字或大写英文字母) + *+ * + * @param value 统一社会信用代码 + * @return 校验结果 + */ + public static boolean isCreditCode(CharSequence value) { + return LicenseKit.isCreditCode(value); + } + /** * 是否是有效的统一社会信用代码 *
@@ -1070,11 +1075,15 @@ public static void validateBetween(Number value, Number min, Number max, String * 第五部分:校验码1位 (数字或大写英文字母) ** - * @param creditCode 统一社会信用代码 + * @param value 统一社会信用代码 * @return 校验结果 + * @throws ValidateException 验证异常 */ - public static boolean isCreditCode(CharSequence creditCode) { - return LicenseKit.isCreditCode(creditCode); + public static
- * 霍加阿卜杜拉·麦提喀斯木 - * 玛合萨提别克·哈斯木别克 - * 阿布都热依木江·艾斯卡尔 - * 阿卜杜尼亚孜·毛力尼亚孜 - *- * 总结中文姓名:2-60位,只能是中文和· - * - * @param value 中文姓名 - * @return 是否是正确的中文姓名 - */ - public static boolean isChineseName(CharSequence value) { - return isMatchRegex(RegEx.CHINESE_NAME_PATTERN, value); - } - - /** * 验证是否为驾驶证 别名:驾驶证档案编号、行驶证编号 * @@ -1179,4 +1168,36 @@ public static void validatePassword(String value, String errorMsg, boolean... we } } + /** + * 是否是中文姓名 + * 维吾尔族姓名里面的点是· + * 正确维吾尔族姓名: + *
+ * 霍加阿卜杜拉·麦提喀斯木 + * 玛合萨提别克·哈斯木别克 + * 阿布都热依木江·艾斯卡尔 + * 阿卜杜尼亚孜·毛力尼亚孜 + *+ * 总结中文姓名:2-60位,只能是中文和· + * + * @param value 中文姓名 + * @return 是否是正确的中文姓名 + */ + public static boolean isChineseName(CharSequence value) { + return isMatchRegex(RegEx.CHINESE_NAME_PATTERN, value); + } + + /** + * 验证是是否符合密码要求 + * + * @param value 值 + * @param errorMsg 验证错误的信息 + * @throws ValidateException 验证异常 + */ + public static void validateisChineseName(String value, String errorMsg) throws ValidateException { + if (false == isChineseName(value)) { + throw new ValidateException(errorMsg); + } + } + } From 31496bb897af6ba133cd37b388b6ff9be44977a9 Mon Sep 17 00:00:00 2001 From: Kimi Liu <839536@qq.com> Date: Fri, 8 Jul 2022 14:14:50 +0800 Subject: [PATCH 02/19] bug fix and optimized code --- .../{AbstractBlending.java => Blending.java} | 17 +- .../java/org/aoju/bus/core/io/ByteString.java | 24 +- .../org/aoju/bus/core/io/EventFactory.java | 38 -- .../org/aoju/bus/core/io/FileOperator.java | 83 --- .../java/org/aoju/bus/core/io/FileSystem.java | 129 ---- .../java/org/aoju/bus/core/io/HashSink.java | 125 ---- .../java/org/aoju/bus/core/io/HashSource.java | 128 ---- .../main/java/org/aoju/bus/core/io/Pipe.java | 149 ----- .../io/{StreamProgress.java => Progress.java} | 2 +- .../org/aoju/bus/core/io/RelayBuffer.java | 336 ---------- .../java/org/aoju/bus/core/io/RingBuffer.java | 232 ------- .../java/org/aoju/bus/core/io/Segment.java | 14 +- .../aoju/bus/core/io/{ => buffer}/Buffer.java | 23 +- .../bus/core/io/{ => buffer}/ByteBuffer.java | 4 +- .../core/io/{ => buffer}/FastByteBuffer.java | 2 +- .../bus/core/io/{ => buffer}/PageBuffer.java | 2 +- .../core/io/{ => buffer}/VirtualBuffer.java | 2 +- .../bus/core/io/{ => buffer}/WriteBuffer.java | 2 +- .../bus/core/io/copier/ChannelCopier.java | 8 +- .../org/aoju/bus/core/io/copier/IoCopier.java | 6 +- .../core/io/copier/ReaderWriterCopier.java | 8 +- .../aoju/bus/core/io/copier/StreamCopier.java | 8 +- .../bus/core/io/file/LineReadWatcher.java | 2 +- .../AssignSink.java} | 8 +- .../bus/core/io/{ => sink}/BufferSink.java | 6 +- .../bus/core/io/{ => sink}/DeflaterSink.java | 10 +- .../bus/core/io/{ => sink}/FaultHideSink.java | 6 +- .../aoju/bus/core/io/{ => sink}/GzipSink.java | 5 +- .../aoju/bus/core/io/{ => sink}/RealSink.java | 7 +- .../org/aoju/bus/core/io/{ => sink}/Sink.java | 5 +- .../AssignSource.java} | 8 +- .../core/io/{ => source}/BufferSource.java | 9 +- .../ExtractSource.java} | 12 +- .../bus/core/io/{ => source}/GzipSource.java | 15 +- .../bus/core/io/{ => source}/PeekSource.java | 10 +- .../bus/core/io/{ => source}/RealSource.java | 14 +- .../aoju/bus/core/io/{ => source}/Source.java | 5 +- .../{streams => stream}/BOMInputStream.java | 2 +- .../io/{streams => stream}/BOMReader.java | 2 +- .../FastByteOutputStream.java | 4 +- .../{streams => stream}/NullOutputStream.java | 2 +- .../{streams => stream}/QueueInputStream.java | 2 +- .../io/{streams => stream}/QueueReader.java | 2 +- .../RandomFileInputStream.java | 2 +- .../RandomFileOutputStream.java | 2 +- .../io/{streams => stream}/StreamBuffer.java | 2 +- .../StringInputStream.java | 2 +- .../StringOutputStream.java | 2 +- .../io/{streams => stream}/StringReader.java | 2 +- .../io/{streams => stream}/StringWriter.java | 2 +- .../{streams => stream}/VoidInputStream.java | 2 +- .../{streams => stream}/VoidOutputStream.java | 2 +- .../io/{streams => stream}/package-info.java | 2 +- .../AssignTimeout.java} | 8 +- .../core/io/{ => timout}/AsyncTimeout.java | 6 +- .../bus/core/io/{ => timout}/Timeout.java | 2 +- .../{watchers => watcher}/DelayWatcher.java | 2 +- .../{watchers => watcher}/IgnoreWatcher.java | 2 +- .../{watchers => watcher}/SimpleWatcher.java | 2 +- .../{watchers => watcher}/WatchMonitor.java | 2 +- .../io/{watchers => watcher}/WatchServer.java | 2 +- .../io/{watchers => watcher}/Watcher.java | 2 +- .../{watchers => watcher}/WatcherChain.java | 2 +- .../{watchers => watcher}/package-info.java | 2 +- .../org/aoju/bus/core/toolkit/FileKit.java | 2 +- .../java/org/aoju/bus/core/toolkit/IoKit.java | 70 ++- .../org/aoju/bus/core/toolkit/ObjectKit.java | 2 +- .../org/aoju/bus/core/toolkit/RuntimeKit.java | 2 +- .../org/aoju/bus/core/toolkit/WatchKit.java | 4 +- .../java/org/aoju/bus/crypto/Builder.java | 2 +- .../aoju/bus/crypto/asymmetric/Crypto.java | 2 +- bus-http/README.md | 6 +- bus-http/pom.xml | 20 +- .../main/java/org/aoju/bus/http/Builder.java | 8 +- .../main/java/org/aoju/bus/http/Callback.java | 26 +- .../main/java/org/aoju/bus/http/Headers.java | 2 +- .../main/java/org/aoju/bus/http/Httpd.java | 4 +- .../main/java/org/aoju/bus/http/NewCall.java | 2 +- .../main/java/org/aoju/bus/http/RealCall.java | 2 +- .../main/java/org/aoju/bus/http/Response.java | 4 +- .../main/java/org/aoju/bus/http/UnoUrl.java | 2 +- .../org/aoju/bus/http/accord/Exchange.java | 10 +- .../aoju/bus/http/accord/RealConnection.java | 4 +- .../org/aoju/bus/http/accord/Transmitter.java | 4 +- .../bus/http/accord/platform/Platform.java | 2 +- .../org/aoju/bus/http/bodys/FormBody.java | 4 +- .../aoju/bus/http/bodys/MultipartBody.java | 4 +- .../aoju/bus/http/bodys/RealResponseBody.java | 2 +- .../org/aoju/bus/http/bodys/RequestBody.java | 4 +- .../org/aoju/bus/http/bodys/ResponseBody.java | 4 +- .../java/org/aoju/bus/http/cache/Cache.java | 19 +- .../aoju/bus/http/cache/CacheInterceptor.java | 7 +- .../org/aoju/bus/http/cache/CacheRequest.java | 2 +- .../org/aoju/bus/http/cache/DiskLruCache.java | 579 +++++++++--------- .../http/metric/http/BridgeInterceptor.java | 2 +- .../metric/http/CallServerInterceptor.java | 2 +- .../org/aoju/bus/http/metric/http/Hpack.java | 6 +- .../aoju/bus/http/metric/http/Http1Codec.java | 16 +- .../aoju/bus/http/metric/http/Http2Codec.java | 4 +- .../bus/http/metric/http/Http2Connection.java | 6 +- .../bus/http/metric/http/Http2Reader.java | 6 +- .../bus/http/metric/http/Http2Stream.java | 7 +- .../bus/http/metric/http/Http2Writer.java | 4 +- .../aoju/bus/http/metric/http/HttpCodec.java | 4 +- .../aoju/bus/http/metric/http/Huffman.java | 2 +- .../bus/http/metric/http/PushObserver.java | 2 +- .../http/metric/suffix/SuffixDatabase.java | 4 +- .../bus/http/plugin/httpv/ProgressBody.java | 8 +- .../bus/http/plugin/httpv/ResultBody.java | 2 +- .../http/plugin/httpz/FileInterceptor.java | 10 +- .../bus/http/plugin/httpz/HttpRequest.java | 4 +- .../aoju/bus/http/socket/RealWebSocket.java | 4 +- .../bus/http/socket/WebSocketProtocol.java | 2 +- .../aoju/bus/http/socket/WebSocketReader.java | 4 +- .../aoju/bus/http/socket/WebSocketWriter.java | 6 +- .../aoju/bus/setting/magic/PopSetting.java | 4 +- .../aoju/bus/setting/magic/Properties.java | 4 +- .../org/aoju/bus/socket/AioQuickClient.java | 2 +- .../org/aoju/bus/socket/AioQuickServer.java | 2 +- .../java/org/aoju/bus/socket/AioSession.java | 2 +- .../org/aoju/bus/socket/BufferFactory.java | 6 +- .../org/aoju/bus/socket/TcpAioSession.java | 6 +- .../org/aoju/bus/socket/UdpAioSession.java | 2 +- .../org/aoju/bus/socket/UdpBootstrap.java | 6 +- .../java/org/aoju/bus/socket/UdpChannel.java | 6 +- .../bus/socket/plugins/PageBufferPlugin.java | 4 +- .../aoju/bus/socket/plugins/SslPlugin.java | 2 +- .../bus/socket/security/HandshakeModel.java | 2 +- .../aoju/bus/socket/security/SslService.java | 2 +- .../bus/socket/security/SslSocketChannel.java | 4 +- 130 files changed, 711 insertions(+), 1783 deletions(-) rename bus-core/src/main/java/org/aoju/bus/core/io/{AbstractBlending.java => Blending.java} (95%) delete mode 100755 bus-core/src/main/java/org/aoju/bus/core/io/EventFactory.java delete mode 100644 bus-core/src/main/java/org/aoju/bus/core/io/FileOperator.java delete mode 100755 bus-core/src/main/java/org/aoju/bus/core/io/FileSystem.java delete mode 100755 bus-core/src/main/java/org/aoju/bus/core/io/HashSink.java delete mode 100755 bus-core/src/main/java/org/aoju/bus/core/io/HashSource.java delete mode 100644 bus-core/src/main/java/org/aoju/bus/core/io/Pipe.java rename bus-core/src/main/java/org/aoju/bus/core/io/{StreamProgress.java => Progress.java} (98%) delete mode 100644 bus-core/src/main/java/org/aoju/bus/core/io/RelayBuffer.java delete mode 100755 bus-core/src/main/java/org/aoju/bus/core/io/RingBuffer.java rename bus-core/src/main/java/org/aoju/bus/core/io/{ => buffer}/Buffer.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => buffer}/ByteBuffer.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => buffer}/FastByteBuffer.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => buffer}/PageBuffer.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => buffer}/VirtualBuffer.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => buffer}/WriteBuffer.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{DelegateSink.java => sink/AssignSink.java} (93%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => sink}/BufferSink.java (96%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => sink}/DeflaterSink.java (95%) mode change 100755 => 100644 rename bus-core/src/main/java/org/aoju/bus/core/io/{ => sink}/FaultHideSink.java (96%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => sink}/GzipSink.java (96%) mode change 100755 => 100644 rename bus-core/src/main/java/org/aoju/bus/core/io/{ => sink}/RealSink.java (97%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => sink}/Sink.java (95%) rename bus-core/src/main/java/org/aoju/bus/core/io/{DelegateSource.java => source/AssignSource.java} (93%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => source}/BufferSource.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{InflaterSource.java => source/ExtractSource.java} (93%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => source}/GzipSource.java (93%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => source}/PeekSource.java (93%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => source}/RealSource.java (97%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => source}/Source.java (96%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/BOMInputStream.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/BOMReader.java (97%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/FastByteOutputStream.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/NullOutputStream.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/QueueInputStream.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/QueueReader.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/RandomFileInputStream.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/RandomFileOutputStream.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/StreamBuffer.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/StringInputStream.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/StringOutputStream.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/StringReader.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/StringWriter.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/VoidInputStream.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/VoidOutputStream.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{streams => stream}/package-info.java (67%) rename bus-core/src/main/java/org/aoju/bus/core/io/{Delegate.java => timout/AssignTimeout.java} (94%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => timout}/AsyncTimeout.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{ => timout}/Timeout.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{watchers => watcher}/DelayWatcher.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{watchers => watcher}/IgnoreWatcher.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{watchers => watcher}/SimpleWatcher.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{watchers => watcher}/WatchMonitor.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{watchers => watcher}/WatchServer.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{watchers => watcher}/Watcher.java (98%) rename bus-core/src/main/java/org/aoju/bus/core/io/{watchers => watcher}/WatcherChain.java (99%) rename bus-core/src/main/java/org/aoju/bus/core/io/{watchers => watcher}/package-info.java (77%) diff --git a/bus-core/src/main/java/org/aoju/bus/core/io/AbstractBlending.java b/bus-core/src/main/java/org/aoju/bus/core/io/Blending.java similarity index 95% rename from bus-core/src/main/java/org/aoju/bus/core/io/AbstractBlending.java rename to bus-core/src/main/java/org/aoju/bus/core/io/Blending.java index fb47e38b80..3cabfc10cf 100755 --- a/bus-core/src/main/java/org/aoju/bus/core/io/AbstractBlending.java +++ b/bus-core/src/main/java/org/aoju/bus/core/io/Blending.java @@ -25,6 +25,9 @@ ********************************************************************************/ package org.aoju.bus.core.io; +import org.aoju.bus.core.io.buffer.Buffer; +import org.aoju.bus.core.io.source.BufferSource; + import java.util.*; /** @@ -33,12 +36,12 @@ * @author Kimi Liu * @since Java 17+ */ -public class AbstractBlending extends AbstractList
* 第一部分:登记管理部门代码1位 (数字或大写英文字母) * 第二部分:机构类别代码1位 (数字或大写英文字母) @@ -321,7 +321,6 @@ public class RegEx { public static final String CREDIT_CODE_PATTERN = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$"; public static final Pattern CREDIT_CODE = Pattern.compile(CREDIT_CODE_PATTERN); - /** * 正则中需要被转义的关键字 */ diff --git a/bus-core/src/main/java/org/aoju/bus/core/toolkit/CollKit.java b/bus-core/src/main/java/org/aoju/bus/core/toolkit/CollKit.java index 3d309fc5ca..324ea79841 100755 --- a/bus-core/src/main/java/org/aoju/bus/core/toolkit/CollKit.java +++ b/bus-core/src/main/java/org/aoju/bus/core/toolkit/CollKit.java @@ -481,7 +481,7 @@ public static* - * @param ch 被检查的字符处 + * @param args 被检查的字符处 * @return true表示为ASCII字符, ASCII字符位于0~127之间 */ - public static boolean isAscii(char ch) { - return ch < 128; + public static boolean isAscii(char args) { + return args < 128; } /** @@ -84,11 +84,11 @@ public static boolean isAscii(char ch) { * CharKit.isAsciiPrintable('©') = false * * - * @param ch 被检查的字符处 + * @param args 被检查的字符处 * @return true表示为ASCII可见字符, 可见字符位于32~126之间 */ - public static boolean isAsciiPrintable(char ch) { - return ch >= Normal._32 && ch < 127; + public static boolean isAsciiPrintable(char args) { + return args >= Normal._32 && args < 127; } /** @@ -103,11 +103,11 @@ public static boolean isAsciiPrintable(char ch) { * CharKit.isAsciiControl('©') = false * * - * @param ch 被检查的字符 + * @param args 被检查的字符 * @return true表示为控制符, 控制符位于0~31和127 */ - public static boolean isAsciiControl(final char ch) { - return ch < Normal._32 || ch == 127; + public static boolean isAsciiControl(final char args) { + return args < Normal._32 || args == 127; } /** @@ -123,11 +123,11 @@ public static boolean isAsciiControl(final char ch) { * CharKit.isLetter('©') = false * * - * @param ch 被检查的字符 + * @param args 被检查的字符 * @return true表示为字母(包括大写字母和小写字母)字母包括A~Z和a~z */ - public static boolean isLetter(char ch) { - return isLetterUpper(ch) || isLetterLower(ch); + public static boolean isLetter(char args) { + return isLetterUpper(args) || isLetterLower(args); } /** @@ -142,11 +142,11 @@ public static boolean isLetter(char ch) { * CharKit.isLetterUpper('©') = false * * - * @param ch 被检查的字符 + * @param args 被检查的字符 * @return true表示为大写字母, 大写字母包括A~Z */ - public static boolean isLetterUpper(final char ch) { - return ch >= 'A' && ch <= 'Z'; + public static boolean isLetterUpper(final char args) { + return args >= 'A' && args <= 'Z'; } /** @@ -161,11 +161,11 @@ public static boolean isLetterUpper(final char ch) { * CharKit.isLetterLower('©') = false * * - * @param ch 被检查的字符 + * @param args 被检查的字符 * @return true表示为小写字母, 小写字母指a~z */ - public static boolean isLetterLower(final char ch) { - return ch >= 'a' && ch <= 'z'; + public static boolean isLetterLower(final char args) { + return args >= 'a' && args <= 'z'; } /** @@ -180,11 +180,11 @@ public static boolean isLetterLower(final char ch) { * CharKit.isNumber('©') = false * * - * @param ch 被检查的字符 + * @param args 被检查的字符 * @return true表示为数字字符, 数字字符指0~9 */ - public static boolean isNumber(char ch) { - return ch >= Symbol.C_ZERO && ch <= Symbol.C_NINE; + public static boolean isNumber(char args) { + return args >= Symbol.C_ZERO && args <= Symbol.C_NINE; } /** @@ -195,11 +195,11 @@ public static boolean isNumber(char ch) { * 4. A~F * * - * @param c 字符 + * @param args 字符 * @return 是否为16进制规范的字符 */ - public static boolean isHexChar(char c) { - return isNumber(c) || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'); + public static boolean isHexChar(char args) { + return isNumber(args) || (args >= 'a' && args <= 'f') || (args >= 'A' && args <= 'F'); } /** @@ -214,11 +214,11 @@ public static boolean isHexChar(char c) { * CharKit.isLetterOrNumber('©') = false * * - * @param ch 被检查的字符 + * @param args 被检查的字符 * @return true表示为字母或数字, 包括A~Z、a~z、0~9 */ - public static boolean isLetterOrNumber(final char ch) { - return isLetter(ch) || isNumber(ch); + public static boolean isLetterOrNumber(final char args) { + return isLetter(args) || isNumber(args); } @@ -245,41 +245,41 @@ public static boolean isCharClass(Class> clazz) { * char.class * * - * @param value 被检查的对象 + * @param args 被检查的对象 * @return true表示为字符类 */ - public static boolean isChar(Object value) { - return value instanceof Character || value.getClass() == char.class; + public static boolean isChar(Object args) { + return args instanceof Character || args.getClass() == char.class; } /** * 是否空白符 * 空白符包括空格、制表符、全角空格和不间断空格 * - * @param c 字符 + * @param args 字符 * @return 是否空白符 * @see Character#isWhitespace(int) * @see Character#isSpaceChar(int) */ - public static boolean isBlankChar(char c) { - return isBlankChar((int) c); + public static boolean isBlankChar(char args) { + return isBlankChar((int) args); } /** * 是否空白符 * 空白符包括空格、制表符、全角空格和不间断空格 * - * @param c 字符 + * @param args 字符 * @return 是否空白符 * @see Character#isWhitespace(int) * @see Character#isSpaceChar(int) */ - public static boolean isBlankChar(int c) { - return Character.isWhitespace(c) - || Character.isSpaceChar(c) - || c == '\ufeff' - || c == '\u202a' - || c == '\u0000'; + public static boolean isBlankChar(int args) { + return Character.isWhitespace(args) + || Character.isSpaceChar(args) + || args == '\ufeff' + || args == '\u202a' + || args == '\u0000'; } /** @@ -367,11 +367,11 @@ public static boolean isNotBlank(CharSequence text) { * StringKit.isNoneBlank("foo", "bar") = true * * - * @param texts 要检查的字符串可以为null或空 + * @param args 要检查的字符串可以为null或空 * @return 所有字符序列都不为空或null或仅为空格 */ - public static boolean isNoneBlank(final CharSequence... texts) { - return !isAnyBlank(texts); + public static boolean isNoneBlank(final CharSequence... args) { + return !isAnyBlank(args); } /** @@ -391,14 +391,14 @@ public static boolean isNoneBlank(final CharSequence... texts) { * StringKit.isAnyBlank("foo", "bar") = false * * - * @param texts 要检查的字符序列可以为空或空 + * @param args 要检查的字符序列可以为空或空 * @return 如果任何一个字符序列是空的,或者是空的,或者只有空白 */ - public static boolean isAnyBlank(final CharSequence... texts) { - if (ArrayKit.isEmpty(texts)) { + public static boolean isAnyBlank(final CharSequence... args) { + if (ArrayKit.isEmpty(args)) { return false; } - for (final CharSequence text : texts) { + for (final CharSequence text : args) { if (isBlank(text)) { return true; } @@ -422,15 +422,15 @@ public static boolean isAnyBlank(final CharSequence... texts) { *Collection subtract(Collection coll1, Collection coll */ public static List subtractToList(Collection coll1, Collection coll2) { if (isEmpty(coll1)) { - return Collections.emptyList(); + return newArrayList(); } if (isEmpty(coll2)) { if (null == coll1) { @@ -1540,7 +1540,7 @@ public static List sub(Collection list, int start, int end, int step) */ public static List > split(List
list, int size) { if (isEmpty(list)) { - return Collections.emptyList(); + return newArrayList(); } List > result = new ArrayList<>(list.size() / size + 1); @@ -3338,7 +3338,7 @@ public static
Collection trans(Collection collection, Function su */ public static List of(T... ts) { if (ArrayKit.isEmpty(ts)) { - return Collections.emptyList(); + return newArrayList(); } List unmodifiableList = new ArrayList<>(ts.length); Collections.addAll(unmodifiableList, ts); @@ -3415,7 +3415,7 @@ public static Map toIdentityMap(Collection collection, Function< */ public static Map toIdentityMap(Collection collection, Function key, boolean isParallel) { if (isEmpty(collection)) { - return Collections.emptyMap(); + return MapKit.newHashMap(0); } return toMap(collection, (v) -> org.aoju.bus.core.lang.Optional.ofNullable(v).map(key).get(), Function.identity(), isParallel); } @@ -3448,7 +3448,7 @@ public static Map toMap(Collection collection, Function */ public static Map toMap(Collection collection, Function key, Function value, boolean isParallel) { if (isEmpty(collection)) { - return Collections.emptyMap(); + return MapKit.newHashMap(0); } return StreamKit.of(collection, isParallel) .collect(HashMap::new, (m, v) -> m.put(key.apply(v), value.apply(v)), HashMap::putAll); @@ -3481,7 +3481,7 @@ public static Map > groupByKey(Collection collection, Functi */ public static Map > groupByKey(Collection collection, Function key, boolean isParallel) { if (isEmpty(collection)) { - return Collections.emptyMap(); + return MapKit.newHashMap(0); } return StreamKit.of(collection, isParallel).collect(Collectors.groupingBy(key, Collectors.toList())); } @@ -3519,7 +3519,7 @@ public static Map >> groupBy2Key(Collection collec public static Map >> groupBy2Key(Collection collection, Function key1, Function key2, boolean isParallel) { if (isEmpty(collection)) { - return Collections.emptyMap(); + return MapKit.newHashMap(0); } return StreamKit.of(collection, isParallel) .collect(Collectors.groupingBy(key1, Collectors.groupingBy(key2, Collectors.toList()))); @@ -3557,7 +3557,7 @@ public static Map > group2Map(Collection collection, Fu public static Map > group2Map(Collection collection, Function key1, Function key2, boolean isParallel) { if (isEmpty(collection) || key1 == null || key2 == null) { - return Collections.emptyMap(); + return MapKit.newHashMap(0); } return StreamKit.of(collection, isParallel) .collect(Collectors.groupingBy(key1, Collectors.toMap(key2, Function.identity(), (l, r) -> l))); @@ -3596,7 +3596,7 @@ public static Map > groupKeyValue(Collection collection, public static Map > groupKeyValue(Collection collection, Function key, Function value, boolean isParallel) { if (isEmpty(collection)) { - return Collections.emptyMap(); + return MapKit.newHashMap(0); } return StreamKit.of(collection, isParallel) .collect(Collectors.groupingBy(key, Collectors.mapping(value, Collectors.toList()))); @@ -3802,7 +3802,7 @@ public static List toList(Collection collection, Function fun */ public static List toList(Collection collection, Function function, boolean isParallel) { if (isEmpty(collection)) { - return Collections.emptyList(); + return newArrayList(); } return StreamKit.of(collection, isParallel) .map(function) @@ -3837,7 +3837,7 @@ public static Set toSet(Collection collection, Function funct */ public static Set toSet(Collection collection, Function function, boolean isParallel) { if (isEmpty(collection)) { - return Collections.emptySet(); + return CollKit.newHashSet(); } return StreamKit.of(collection, isParallel) .map(function) @@ -3859,11 +3859,11 @@ public static Set toSet(Collection collection, Function funct */ public static Map merge(Map map1, Map map2, BiFunction merge) { if (MapKit.isEmpty(map1) && MapKit.isEmpty(map2)) { - return Collections.emptyMap(); + return MapKit.newHashMap(0); } else if (MapKit.isEmpty(map1)) { - map1 = Collections.emptyMap(); + map1 = MapKit.newHashMap(0); } else if (MapKit.isEmpty(map2)) { - map2 = Collections.emptyMap(); + map2 = MapKit.newHashMap(0); } Set key = new HashSet<>(); key.addAll(map1.keySet()); From 8eb2369f21db11b74e016d2a0b18461e907e57a5 Mon Sep 17 00:00:00 2001 From: Kimi Liu <839536@qq.com> Date: Sun, 10 Jul 2022 11:19:39 +0800 Subject: [PATCH 04/19] bug fix and optimized code --- .../org/aoju/bus/core/toolkit/CharsKit.java | 669 +++++++++--------- 1 file changed, 348 insertions(+), 321 deletions(-) diff --git a/bus-core/src/main/java/org/aoju/bus/core/toolkit/CharsKit.java b/bus-core/src/main/java/org/aoju/bus/core/toolkit/CharsKit.java index 1da84b4ad3..ebedc4bf39 100755 --- a/bus-core/src/main/java/org/aoju/bus/core/toolkit/CharsKit.java +++ b/bus-core/src/main/java/org/aoju/bus/core/toolkit/CharsKit.java @@ -65,11 +65,11 @@ public class CharsKit { * CharKit.isAscii('©') = false *
null
,则返回true
*/
- public static boolean equals(CharSequence stra, CharSequence strb) {
- return equals(stra, strb, false);
+ public static boolean equals(CharSequence x, CharSequence y) {
+ return equals(x, y, false);
}
/**
* 比较两个字符串是否相等
* null
,则返回true
*/
- public static boolean equals(CharSequence stra, CharSequence strb, boolean ignoreCase) {
- if (null == stra) {
+ public static boolean equals(CharSequence x, CharSequence y, boolean ignoreCase) {
+ if (null == x) {
// 只有两个都为null才判断相等
- return null == strb;
+ return null == y;
}
- if (null == strb) {
+ if (null == y) {
// 字符串2空,字符串1非空,直接false
return false;
}
if (ignoreCase) {
- return stra.toString().equalsIgnoreCase(strb.toString());
+ return x.toString().equalsIgnoreCase(y.toString());
} else {
- return stra.equals(strb);
+ return x.equals(y);
}
}
@@ -1917,54 +1917,54 @@ public static boolean equals(CharSequence stra, CharSequence strb, boolean ignor
* equalsIgnoreCase("abc", "ABC") = true
*
*
- * @param stra 要比较的字符串
- * @param strb 要比较的字符串
+ * @param x 要比较的字符串
+ * @param y 要比较的字符串
* @return 如果两个字符串相同,或者都是null
,则返回true
*/
- public static boolean equalsIgnoreCase(CharSequence stra, CharSequence strb) {
- return equals(stra, strb, true);
+ public static boolean equalsIgnoreCase(CharSequence x, CharSequence y) {
+ return equals(x, y, true);
}
/**
* 给定字符串是否与提供的中任一字符串相同(忽略大小写),相同则返回{@code true},没有相同的返回{@code false}
* 如果参与比对的字符串列表为空,返回{@code false}
*
- * @param stra 给定需要检查的字符串
- * @param strb 需要参与比对的字符串列表
+ * @param x 给定需要检查的字符串
+ * @param y 需要参与比对的字符串列表
* @return 是否相同
*/
- public static boolean equalsAnyIgnoreCase(CharSequence stra, CharSequence... strb) {
- return equalsAny(stra, true, strb);
+ public static boolean equalsAnyIgnoreCase(CharSequence x, CharSequence... y) {
+ return equalsAny(x, true, y);
}
/**
* 给定字符串是否与提供的中任一字符串相同,相同则返回{@code true},没有相同的返回{@code false}
* 如果参与比对的字符串列表为空,返回{@code false}
*
- * @param str1 给定需要检查的字符串
- * @param texts 需要参与比对的字符串列表
+ * @param text 给定需要检查的字符串
+ * @param args 需要参与比对的字符串列表
* @return 是否相同
*/
- public static boolean equalsAny(CharSequence str1, CharSequence... texts) {
- return equalsAny(str1, false, texts);
+ public static boolean equalsAny(CharSequence text, CharSequence... args) {
+ return equalsAny(text, false, args);
}
/**
* 给定字符串是否与提供的中任一字符串相同,相同则返回{@code true},没有相同的返回{@code false}
* 如果参与比对的字符串列表为空,返回{@code false}
*
- * @param str1 给定需要检查的字符串
+ * @param text 给定需要检查的字符串
* @param ignoreCase 是否忽略大小写
- * @param texts 需要参与比对的字符串列表
+ * @param args 需要参与比对的字符串列表
* @return 是否相同
*/
- public static boolean equalsAny(CharSequence str1, boolean ignoreCase, CharSequence... texts) {
- if (ArrayKit.isEmpty(texts)) {
+ public static boolean equalsAny(CharSequence text, boolean ignoreCase, CharSequence... args) {
+ if (ArrayKit.isEmpty(text)) {
return false;
}
- for (CharSequence text : texts) {
- if (equals(str1, text, ignoreCase)) {
+ for (CharSequence t : args) {
+ if (equals(text, t, ignoreCase)) {
return true;
}
}
@@ -1974,44 +1974,44 @@ public static boolean equalsAny(CharSequence str1, boolean ignoreCase, CharSeque
/**
* 指定范围内查找指定字符
*
- * @param text 字符串
- * @param searchChar 被查找的字符
+ * @param text 字符串
+ * @param word 被查找的字符
* @return 位置
*/
- public static int indexOf(final CharSequence text, char searchChar) {
- return indexOf(text, searchChar, 0);
+ public static int indexOf(final CharSequence text, char word) {
+ return indexOf(text, word, 0);
}
/**
* 指定范围内查找指定字符
*
- * @param text 字符串
- * @param searchChar 被查找的字符
- * @param start 起始位置,如果小于0,从0开始查找
+ * @param text 字符串
+ * @param word 被查找的字符
+ * @param start 起始位置,如果小于0,从0开始查找
* @return 位置
*/
- public static int indexOf(final CharSequence text, char searchChar, int start) {
+ public static int indexOf(final CharSequence text, char word, int start) {
if (text instanceof String) {
- return ((String) text).indexOf(searchChar, start);
+ return ((String) text).indexOf(word, start);
} else {
- return indexOf(text, searchChar, start, -1);
+ return indexOf(text, word, start, -1);
}
}
/**
* 指定范围内查找指定字符
*
- * @param text 字符串
- * @param searchChar 被查找的字符
- * @param start 起始位置,如果小于0,从0开始查找
- * @param end 终止位置,如果超过text.length()则默认查找到字符串末尾
+ * @param text 字符串
+ * @param word 被查找的字符
+ * @param start 起始位置,如果小于0,从0开始查找
+ * @param end 终止位置,如果超过text.length()则默认查找到字符串末尾
* @return 位置
*/
- public static int indexOf(final CharSequence text, char searchChar, int start, int end) {
+ public static int indexOf(final CharSequence text, char word, int start, int end) {
if (isEmpty(text)) {
return Normal.__1;
}
- return new CharFinder(searchChar).setText(text).setEndIndex(end).start(start);
+ return new CharFinder(word).setText(text).setEndIndex(end).start(start);
}
/**
@@ -2981,11 +2981,11 @@ public static String wrap(CharSequence text, CharSequence prefix, CharSequence s
* 包装多个字符串
*
* @param prefixAndSuffix 前缀和后缀
- * @param texts 多个字符串
+ * @param args 多个字符串
* @return 包装的字符串数组
*/
- public static String[] wrapAll(CharSequence prefixAndSuffix, CharSequence... texts) {
- return wrapAll(prefixAndSuffix, prefixAndSuffix, texts);
+ public static String[] wrapAll(CharSequence prefixAndSuffix, CharSequence... args) {
+ return wrapAll(prefixAndSuffix, prefixAndSuffix, args);
}
/**
@@ -2993,13 +2993,13 @@ public static String[] wrapAll(CharSequence prefixAndSuffix, CharSequence... tex
*
* @param prefix 前缀
* @param suffix 后缀
- * @param texts 多个字符串
+ * @param args 多个字符串
* @return 包装的字符串数组
*/
- public static String[] wrapAll(CharSequence prefix, CharSequence suffix, CharSequence... texts) {
- final String[] results = new String[texts.length];
- for (int i = 0; i < texts.length; i++) {
- results[i] = wrap(texts[i], prefix, suffix);
+ public static String[] wrapAll(CharSequence prefix, CharSequence suffix, CharSequence... args) {
+ final String[] results = new String[args.length];
+ for (int i = 0; i < args.length; i++) {
+ results[i] = wrap(args[i], prefix, suffix);
}
return results;
}
@@ -3121,28 +3121,28 @@ public static String wrapIfMissing(CharSequence text, CharSequence prefix, CharS
if (isNotEmpty(suffix)) {
len += suffix.length();
}
- StringBuilder sb = new StringBuilder(len);
+ StringBuilder stringBuilder = new StringBuilder(len);
if (isNotEmpty(prefix) && false == startWith(text, prefix)) {
- sb.append(prefix);
+ stringBuilder.append(prefix);
}
if (isNotEmpty(text)) {
- sb.append(text);
+ stringBuilder.append(text);
}
if (isNotEmpty(suffix) && false == endWith(text, suffix)) {
- sb.append(suffix);
+ stringBuilder.append(suffix);
}
- return sb.toString();
+ return stringBuilder.toString();
}
/**
* 包装多个字符串,如果已经包装,则不再包装
*
* @param prefixAndSuffix 前缀和后缀
- * @param texts 多个字符串
+ * @param args 多个字符串
* @return 包装的字符串数组
*/
- public static String[] wrapAllIfMissing(CharSequence prefixAndSuffix, CharSequence... texts) {
- return wrapAllIfMissing(prefixAndSuffix, prefixAndSuffix, texts);
+ public static String[] wrapAllIfMissing(CharSequence prefixAndSuffix, CharSequence... args) {
+ return wrapAllIfMissing(prefixAndSuffix, prefixAndSuffix, args);
}
/**
@@ -3150,13 +3150,13 @@ public static String[] wrapAllIfMissing(CharSequence prefixAndSuffix, CharSequen
*
* @param prefix 前缀
* @param suffix 后缀
- * @param texts 多个字符串
+ * @param args 多个字符串
* @return 包装的字符串数组
*/
- public static String[] wrapAllIfMissing(CharSequence prefix, CharSequence suffix, CharSequence... texts) {
- final String[] results = new String[texts.length];
- for (int i = 0; i < texts.length; i++) {
- results[i] = wrapIfMissing(texts[i], prefix, suffix);
+ public static String[] wrapAllIfMissing(CharSequence prefix, CharSequence suffix, CharSequence... args) {
+ final String[] results = new String[args.length];
+ for (int i = 0; i < args.length; i++) {
+ results[i] = wrapIfMissing(args[i], prefix, suffix);
}
return results;
}
@@ -3165,14 +3165,14 @@ public static String[] wrapAllIfMissing(CharSequence prefix, CharSequence suffix
* 字符串是否以给定字符开始
*
* @param text 字符串
- * @param c 字符
+ * @param word 字符
* @return 是否开始
*/
- public static boolean startWith(CharSequence text, char c) {
+ public static boolean startWith(CharSequence text, char word) {
if (true == isEmpty(text)) {
return false;
}
- return c == text.charAt(0);
+ return word == text.charAt(0);
}
/**
@@ -3241,16 +3241,16 @@ public static boolean startWithIgnoreEquals(CharSequence text, CharSequence pref
* 给定字符串是否以任何一个字符串开始
* 给定字符串和数组为空都返回false
*
- * @param text 给定字符串
- * @param prefixes 需要检测的开始字符串
+ * @param text 给定字符串
+ * @param args 需要检测的开始字符串
* @return 给定字符串是否以任何一个字符串开始
*/
- public static boolean startWithAny(CharSequence text, CharSequence... prefixes) {
- if (isEmpty(text) || ArrayKit.isEmpty(prefixes)) {
+ public static boolean startWithAny(CharSequence text, CharSequence... args) {
+ if (isEmpty(text) || ArrayKit.isEmpty(args)) {
return false;
}
- for (CharSequence suffix : prefixes) {
+ for (CharSequence suffix : args) {
if (startWith(text, suffix, false)) {
return true;
}
@@ -3263,16 +3263,16 @@ public static boolean startWithAny(CharSequence text, CharSequence... prefixes)
* 给定字符串是否以任何一个字符串结尾(忽略大小写)
* 给定字符串和数组为空都返回false
*
- * @param text 给定字符串
- * @param suffixes 需要检测的结尾字符串
+ * @param text 给定字符串
+ * @param args 需要检测的结尾字符串
* @return 给定字符串是否以任何一个字符串结尾
*/
- public static boolean startWithAnyIgnoreCase(final CharSequence text, final CharSequence... suffixes) {
- if (isEmpty(text) || ArrayKit.isEmpty(suffixes)) {
+ public static boolean startWithAnyIgnoreCase(final CharSequence text, final CharSequence... args) {
+ if (isEmpty(text) || ArrayKit.isEmpty(args)) {
return false;
}
- for (final CharSequence suffix : suffixes) {
+ for (final CharSequence suffix : args) {
if (startWith(text, suffix, true)) {
return true;
}
@@ -3362,16 +3362,16 @@ public static boolean endWith(CharSequence text, CharSequence suffix) {
* 给定字符串是否以任何一个字符串结尾
* 给定字符串和数组为空都返回false
*
- * @param text 给定字符串
- * @param suffixes 需要检测的结尾字符串
+ * @param text 给定字符串
+ * @param args 需要检测的结尾字符串
* @return 给定字符串是否以任何一个字符串结尾
*/
- public static boolean endWithAny(CharSequence text, CharSequence... suffixes) {
- if (isEmpty(text) || ArrayKit.isEmpty(suffixes)) {
+ public static boolean endWithAny(CharSequence text, CharSequence... args) {
+ if (isEmpty(text) || ArrayKit.isEmpty(args)) {
return false;
}
- for (CharSequence suffix : suffixes) {
+ for (CharSequence suffix : args) {
if (endWith(text, suffix, false)) {
return true;
}
@@ -3383,16 +3383,16 @@ public static boolean endWithAny(CharSequence text, CharSequence... suffixes) {
* 给定字符串是否以任何一个字符串结尾(忽略大小写)
* 给定字符串和数组为空都返回false
*
- * @param text 给定字符串
- * @param suffixes 需要检测的结尾字符串
+ * @param text 给定字符串
+ * @param args 需要检测的结尾字符串
* @return 给定字符串是否以任何一个字符串结尾
*/
- public static boolean endWithAnyIgnoreCase(CharSequence text, CharSequence... suffixes) {
- if (isEmpty(text) || ArrayKit.isEmpty(suffixes)) {
+ public static boolean endWithAnyIgnoreCase(CharSequence text, CharSequence... args) {
+ if (isEmpty(text) || ArrayKit.isEmpty(args)) {
return false;
}
- for (CharSequence suffix : suffixes) {
+ for (CharSequence suffix : args) {
if (endWith(text, suffix, true)) {
return true;
}
@@ -3437,14 +3437,14 @@ public static String strip(CharSequence text, CharSequence prefix, CharSequence
int from = 0;
int to = text.length();
- String str2 = text.toString();
- if (startWith(str2, prefix)) {
+ String value = text.toString();
+ if (startWith(value, prefix)) {
from = prefix.length();
}
- if (endWith(str2, suffix)) {
+ if (endWith(value, suffix)) {
to -= suffix.length();
}
- return str2.substring(from, to);
+ return value.substring(from, to);
}
/**
@@ -3473,14 +3473,14 @@ public static String stripIgnoreCase(CharSequence text, CharSequence prefix, Cha
int from = 0;
int to = text.length();
- String str2 = text.toString();
- if (startWithIgnoreCase(str2, prefix)) {
+ String value = text.toString();
+ if (startWithIgnoreCase(value, prefix)) {
from = prefix.length();
}
- if (endWithIgnoreCase(str2, suffix)) {
+ if (endWithIgnoreCase(value, suffix)) {
to -= suffix.length();
}
- return str2.substring(from, to);
+ return value.substring(from, to);
}
/**
@@ -3495,12 +3495,12 @@ public static String addPrefixIfNot(CharSequence text, CharSequence prefix) {
return toString(text);
}
- final String str2 = text.toString();
- final String prefix2 = prefix.toString();
- if (false == str2.startsWith(prefix2)) {
- return prefix2.concat(str2);
+ final String value = text.toString();
+ final String xSuffix = prefix.toString();
+ if (false == value.startsWith(xSuffix)) {
+ return xSuffix.concat(value);
}
- return str2;
+ return value;
}
/**
@@ -3515,23 +3515,23 @@ public static String addSuffixIfNot(CharSequence text, CharSequence suffix) {
return toString(text);
}
- final String str2 = text.toString();
- final String suffix2 = suffix.toString();
- if (false == str2.endsWith(suffix2)) {
- return str2.concat(suffix2);
+ final String value = text.toString();
+ final String xSuffix = suffix.toString();
+ if (false == value.endsWith(xSuffix)) {
+ return value.concat(xSuffix);
}
- return str2;
+ return value;
}
/**
* 指定字符是否在字符串中出现过
*
- * @param text 字符串
- * @param searchChar 被查找的字符
+ * @param text 字符串
+ * @param word 被查找的字符
* @return 是否包含
*/
- public static boolean contains(CharSequence text, char searchChar) {
- return indexOf(text, searchChar) > -1;
+ public static boolean contains(CharSequence text, char word) {
+ return indexOf(text, word) > -1;
}
/**
@@ -3597,6 +3597,25 @@ public static boolean containsOnly(CharSequence text, char... testChars) {
return true;
}
+ /**
+ * 检查指定字符串中是否含给定的所有字符串
+ *
+ * @param text 字符串
+ * @param args 检查的字符
+ * @return 字符串含有非检查的字符,返回false
+ */
+ public static boolean containsAll(CharSequence text, CharSequence... args) {
+ if (isBlank(text) || ArrayKit.isEmpty(args)) {
+ return false;
+ }
+ for (CharSequence value : args) {
+ if (false == contains(text, value)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
/**
* 给定字符串是否包含空白符(空白符包括空格、制表符、全角空格和不间断空格)
* 如果给定字符串为null或者"",则返回false
@@ -3624,15 +3643,15 @@ public static boolean containsBlank(CharSequence text) {
/**
* 查找指定字符串是否包含指定字符串列表中的任意一个字符串,如果包含返回找到的第一个字符串
*
- * @param text 指定字符串
- * @param testStrs 需要检查的字符串数组
+ * @param text 指定字符串
+ * @param args 需要检查的字符串数组
* @return 被包含的第一个字符串
*/
- public static String getContainsAny(CharSequence text, CharSequence... testStrs) {
- if (isEmpty(text) || ArrayKit.isEmpty(testStrs)) {
+ public static String getContainsAny(CharSequence text, CharSequence... args) {
+ if (isEmpty(text) || ArrayKit.isEmpty(args)) {
return null;
}
- for (CharSequence val : testStrs) {
+ for (CharSequence val : args) {
if (val.toString().contains(text)) {
return val.toString();
}
@@ -3643,45 +3662,45 @@ public static String getContainsAny(CharSequence text, CharSequence... testStrs)
/**
* 是否包含特定字符,忽略大小写,如果给定两个参数都为null
,返回true
*
- * @param text 被检测字符串
- * @param testStr 被测试是否包含的字符串
+ * @param text 被检测字符串
+ * @param word 被测试是否包含的字符串
* @return 是否包含
*/
- public static boolean containsIgnoreCase(CharSequence text, CharSequence testStr) {
+ public static boolean containsIgnoreCase(CharSequence text, CharSequence word) {
if (null == text) {
// 如果被监测字符串和
- return null == testStr;
+ return null == word;
}
- return indexOfIgnoreCase(text, testStr) > -1;
+ return indexOfIgnoreCase(text, word) > -1;
}
/**
* 查找指定字符串是否包含指定字符串列表中的任意一个字符串
* 忽略大小写
*
- * @param text 指定字符串
- * @param testStrs 需要检查的字符串数组
+ * @param text 指定字符串
+ * @param args 需要检查的字符串数组
* @return 是否包含任意一个字符串
*/
- public static boolean containsAnyIgnoreCase(CharSequence text, CharSequence... testStrs) {
- return null != getContainsStrIgnoreCase(text, testStrs);
+ public static boolean containsAnyIgnoreCase(CharSequence text, CharSequence... args) {
+ return null != getContainsStrIgnoreCase(text, args);
}
/**
* 查找指定字符串是否包含指定字符串列表中的任意一个字符串,如果包含返回找到的第一个字符串
* 忽略大小写
*
- * @param text 指定字符串
- * @param testStrs 需要检查的字符串数组
+ * @param text 指定字符串
+ * @param args 需要检查的字符串数组
* @return 被包含的第一个字符串
*/
- public static String getContainsStrIgnoreCase(CharSequence text, CharSequence... testStrs) {
- if (isEmpty(text) || ArrayKit.isEmpty(testStrs)) {
+ public static String getContainsStrIgnoreCase(CharSequence text, CharSequence... args) {
+ if (isEmpty(text) || ArrayKit.isEmpty(args)) {
return null;
}
- for (CharSequence testStr : testStrs) {
- if (containsIgnoreCase(text, testStr)) {
- return testStr.toString();
+ for (CharSequence value : args) {
+ if (containsIgnoreCase(text, value)) {
+ return value.toString();
}
}
return null;
@@ -3815,11 +3834,11 @@ public static String[] cut(CharSequence text, int partLength) {
* 将给定字符串,变成 "xxx...xxx" 形式的字符串
*
* * StringKit.appendIfMissing(null, null) = null @@ -3905,14 +3926,15 @@ private static String appendIfMissing(final String text, final CharSequence suff * StringKit.appendIfMissing("abcMNO", "xyz", "mno") = "abcMNOxyz" ** - * @param text 字符串. - * @param suffix 附加到字符串末尾的后缀. - * @param suffixes 有效终止符的附加后缀(可选). - * @return 如果添加了后缀,则为新字符串,否则为相同的字符串. + * @param text 字符串 + * @param suffix 附加到字符串末尾的后缀 + * @param args 有效终止符的附加后缀(可选) + * @return 如果添加了后缀,则为新字符串,否则为相同的字符串 */ - public static String appendIfMissing(final String text, final CharSequence suffix, final CharSequence... - suffixes) { - return appendIfMissing(text, suffix, false, suffixes); + public static String appendIfMissing(final String text, + final CharSequence suffix, + final CharSequence... args) { + return appendIfMissing(text, suffix, false, args); } /** @@ -3940,32 +3962,35 @@ public static String appendIfMissing(final String text, final CharSequence suffi * StringKit.appendIfMissingIgnoreCase("abcMNO", "xyz", "mno") = "abcMNO" * * - * @param text 字符串. - * @param suffix 附加到字符串末尾的后缀. - * @param suffixes 有效终止符的附加后缀(可选). - * @return 如果添加了后缀,则为新字符串,否则为相同的字符串. + * @param text 字符串 + * @param suffix 附加到字符串末尾的后缀 + * @param args 有效终止符的附加后缀(可选) + * @return 如果添加了后缀,则为新字符串,否则为相同的字符串 */ - public static String appendIfMissingIgnoreCase(final String text, final CharSequence suffix, final CharSequence... - suffixes) { - return appendIfMissing(text, suffix, true, suffixes); + public static String appendIfMissingIgnoreCase(final String text, + final CharSequence suffix, + final CharSequence... args) { + return appendIfMissing(text, suffix, true, args); } /** - * 如果字符串还没有以任何前缀开始,则将前缀添加到字符串的开头. + * 如果字符串还没有以任何前缀开始,则将前缀添加到字符串的开头 * - * @param text 字符串. - * @param prefix 在字符串开始前的前缀. - * @param ignoreCase 指示比较是否应忽略大小写. - * @param prefixes 有效的附加前缀(可选). - * @return 如果前缀是前缀,则为新字符串,否则为相同的字符串. - */ - private static String prependIfMissing(final String text, final CharSequence prefix, final boolean ignoreCase, - final CharSequence... prefixes) { + * @param text 字符串 + * @param prefix 在字符串开始前的前缀 + * @param ignoreCase 指示比较是否应忽略大小写 + * @param args 有效的附加前缀(可选) + * @return 如果前缀是前缀,则为新字符串,否则为相同的字符串 + */ + private static String prependIfMissing(final String text, + final CharSequence prefix, + final boolean ignoreCase, + final CharSequence... args) { if (null == text || isEmpty(prefix) || startWith(text, prefix, ignoreCase)) { return toString(text); } - if (null != prefixes && prefixes.length > 0) { - for (final CharSequence s : prefixes) { + if (null != args && args.length > 0) { + for (final CharSequence s : args) { if (startWith(text, s, ignoreCase)) { return text; } @@ -3975,7 +4000,7 @@ private static String prependIfMissing(final String text, final CharSequence pre } /** - * 如果字符串还没有以任何前缀开始,则将前缀添加到字符串的开头. + * 如果字符串还没有以任何前缀开始,则将前缀添加到字符串的开头 * *
* StringKit.prependIfMissing(null, null) = null @@ -3999,18 +4024,19 @@ private static String prependIfMissing(final String text, final CharSequence pre * StringKit.prependIfMissing("MNOabc", "xyz", "mno") = "xyzMNOabc" ** - * @param text T字符串. - * @param prefix 在字符串开始前的前缀. - * @param prefixes 有效的附加前缀(可选). - * @return 如果前缀是前缀,则为新字符串,否则为相同的字符串. + * @param text T字符串 + * @param prefix 在字符串开始前的前缀 + * @param args 有效的附加前缀(可选) + * @return 如果前缀是前缀,则为新字符串,否则为相同的字符串 */ - public static String prependIfMissing(final String text, final CharSequence prefix, final CharSequence... - prefixes) { - return prependIfMissing(text, prefix, false, prefixes); + public static String prependIfMissing(final String text, + final CharSequence prefix, + final CharSequence... args) { + return prependIfMissing(text, prefix, false, args); } /** - * 如果字符串尚未开始,则将前缀添加到字符串的开头,不区分大小写,并使用任何前缀. + * 如果字符串尚未开始,则将前缀添加到字符串的开头,不区分大小写,并使用任何前缀 * *
* StringKit.prependIfMissingIgnoreCase(null, null) = null @@ -4034,14 +4060,15 @@ public static String prependIfMissing(final String text, final CharSequence pref * StringKit.prependIfMissingIgnoreCase("MNOabc", "xyz", "mno") = "MNOabc" ** - * @param text T字符串. - * @param prefix 在字符串开始前的前缀. - * @param prefixes 有效的附加前缀(可选). - * @return 如果前缀是前缀,则为新字符串,否则为相同的字符串. + * @param text 字符串 + * @param prefix 在字符串开始前的前缀 + * @param args 有效的附加前缀(可选) + * @return 如果前缀是前缀,则为新字符串,否则为相同的字符串 */ - public static String prependIfMissingIgnoreCase(final String text, final CharSequence prefix, - final CharSequence... prefixes) { - return prependIfMissing(text, prefix, true, prefixes); + public static String prependIfMissingIgnoreCase(final String text, + final CharSequence prefix, + final CharSequence... args) { + return prependIfMissing(text, prefix, true, args); } /** @@ -4132,23 +4159,23 @@ public static String center(CharSequence text, final int size, char padChar) { * * @param text 字符串 * @param size 指定长度 - * @param padStr 两边补充的字符串 + * @param padText 两边补充的字符串 * @return 补充后的字符串 */ - public static String center(CharSequence text, final int size, CharSequence padStr) { + public static String center(CharSequence text, final int size, CharSequence padText) { if (null == text || size <= 0) { return toString(text); } - if (isEmpty(padStr)) { - padStr = Symbol.SPACE; + if (isEmpty(padText)) { + padText = Symbol.SPACE; } final int strLen = text.length(); final int pads = size - strLen; if (pads <= 0) { return text.toString(); } - text = padPre(text, strLen + pads / 2, padStr); - text = padAfter(text, size, padStr); + text = padPre(text, strLen + pads / 2, padText); + text = padAfter(text, size, padText); return text.toString(); } @@ -4163,10 +4190,10 @@ public static String center(CharSequence text, final int size, CharSequence padS * * @param text 字符串 * @param minLength 最小长度 - * @param padStr 补充的字符 + * @param padText 补充的字符 * @return 补充后的字符串 */ - public static String padPre(CharSequence text, int minLength, CharSequence padStr) { + public static String padPre(CharSequence text, int minLength, CharSequence padText) { if (null == text) { return null; } @@ -4177,7 +4204,7 @@ public static String padPre(CharSequence text, int minLength, CharSequence padSt return subPre(text, minLength); } - return repeatByLength(padStr, minLength - strLen).concat(text.toString()); + return repeatByLength(padText, minLength - strLen).concat(text.toString()); } /** @@ -4247,10 +4274,10 @@ public static String padAfter(CharSequence text, int minLength, char padChar) { * * @param text 字符串,如果为
null
,直接返回null
* @param minLength 最小长度
- * @param padStr 补充的字符
+ * @param padText 补充的字符
* @return 补充后的字符串
*/
- public static String padAfter(CharSequence text, int minLength, CharSequence padStr) {
+ public static String padAfter(CharSequence text, int minLength, CharSequence padText) {
if (null == text) {
return null;
}
@@ -4261,7 +4288,7 @@ public static String padAfter(CharSequence text, int minLength, CharSequence pad
return subByLength(text, minLength);
}
- return text.toString().concat(repeatByLength(padStr, minLength - strLen));
+ return text.toString().concat(repeatByLength(padText, minLength - strLen));
}
/**
@@ -4309,13 +4336,13 @@ public static String filter(CharSequence text, Filter