|
@@ -10,6 +10,7 @@ import java.util.concurrent.ThreadLocalRandom;
|
|
|
import java.util.function.BiFunction;
|
|
|
import java.util.function.Consumer;
|
|
|
import java.util.function.Function;
|
|
|
+import java.util.function.Supplier;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -196,7 +197,49 @@ public final class StringUtils {
|
|
|
* @return 非空字符串
|
|
|
*/
|
|
|
public static <T extends CharSequence> T ifEmpty(T first, T second) {
|
|
|
- return first == null || first.length() == 0 ? second : first;
|
|
|
+ return isEmpty(first) ? second : first;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 如果原始字符串不为空,则对原始字符串做对象适配
|
|
|
+ *
|
|
|
+ * @param original 原始字符串
|
|
|
+ * @param adapter 对象适配函数
|
|
|
+ * @param <T> 原始字符串类型
|
|
|
+ * @param <R> 适配目标对象类型
|
|
|
+ * @return 适配目标对象实例
|
|
|
+ */
|
|
|
+ public static <T extends CharSequence, R> R ifEmpty(T original, @NonNull Function<T, R> adapter) {
|
|
|
+ return isEmpty(original) ? null : adapter.apply(original);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 如果原始字符串不为空,则对原始字符串做对象适配,如果目标适配对象为空则返回默认值
|
|
|
+ *
|
|
|
+ * @param original 原始字符串
|
|
|
+ * @param adapter 对象适配函数
|
|
|
+ * @param <T> 原始字符串类型
|
|
|
+ * @param <R> 适配目标对象类型
|
|
|
+ * @return 适配目标对象实例
|
|
|
+ */
|
|
|
+ public static <T extends CharSequence, R> R ifEmpty(T original, @NonNull Function<T, R> adapter, R defaultValue) {
|
|
|
+ R value = ifEmpty(original, adapter);
|
|
|
+ return isEmpty(value) ? defaultValue : value;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 如果原始字符串不为空,则对原始字符串做对象适配,如果目标适配对象为空则返回默认值
|
|
|
+ *
|
|
|
+ * @param original 原始字符串
|
|
|
+ * @param adapter 对象适配函数
|
|
|
+ * @param <T> 原始字符串类型
|
|
|
+ * @param <R> 适配目标对象类型
|
|
|
+ * @return 适配目标对象实例
|
|
|
+ */
|
|
|
+ public static <T extends CharSequence, R> R ifEmpty(T original, @NonNull Function<T, R> adapter,
|
|
|
+ @NonNull Supplier<R> defaulter) {
|
|
|
+ R value = ifEmpty(original, adapter);
|
|
|
+ return isEmpty(value) ? defaulter.get() : value;
|
|
|
}
|
|
|
|
|
|
/**
|