忽略大小写进行类的赋值

public class BeanConverUtil {
    /**
     * 大小写可以忽略
     * 下划线 _ 被忽略
     * NULL值和空字符串不会覆盖新值
     *
     * @param source
     * @param target
     * @param <T>
     * @return
     */
    public static <T> T copyPropertiesIgnoreCase(Object source, Object target) {
        Map<String, Field> sourceMap = CacheFieldMap.getFieldMap(source.getClass());
        CacheFieldMap.getFieldMap(target.getClass()).values().forEach((it) -> {
            Field field = sourceMap.get(it.getName().toLowerCase().replace("_", ""));
            if (field != null) {
                it.setAccessible(true);
                field.setAccessible(true);
                try {
                    //忽略null和空字符串和final修饰的字符串
                    if(field.get(source)!=null&& StringUtils.isNotBlank(field.get(source).toString()) && !Modifier.isFinal(field.getModifiers()))
                        it.set(target, field.get(source));
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        });
        System.out.println(target.toString());
        return (T) target;
    }

    private static class CacheFieldMap {
        private static Map<String, Map<String, Field>> cacheMap = new HashMap<>();

        private static Map<String, Field> getFieldMap(Class clazz) {
            Map<String, Field> result = cacheMap.get(clazz.getName());
            if (result == null) {
                synchronized (CacheFieldMap.class) {
                    if (result == null) {
                        Map<String, Field> fieldMap = new HashMap<>();
                        for (Field field : clazz.getDeclaredFields()) {
                            fieldMap.put(field.getName().toLowerCase().replace("_", ""), field);
                        }
                        cacheMap.put(clazz.getName(), fieldMap);
                        result = cacheMap.get(clazz.getName());
                    }
                }
            }
            return result;
        }
    }
}

当两个类的字段基本一样有些字段的大小写不一样,但是业务含义一样。用其他的工具大小写敏感,不会赋值,需要手动get,set,这个工具类可以解决这个问题,是搬运的,改了一点bug。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要判断一个字符串是否包含某一个字符并忽略大小写,你可以使用 Java 8 中的 `contains()` 方法和 `toLowerCase()` 方法。具体来说,你可以使用以下代码: ```java String str = "This is a Sample String"; char ch = 's'; if (str.toLowerCase().contains(String.valueOf(ch).toLowerCase())) { System.out.println("字符串包含该字符"); } else { System.out.println("字符串不包含该字符"); } ``` 在上面的代码中,我们首先使用 `toLowerCase()` 方法将字符串中的所有字符转换为小写字母,然后使用 `contains()` 方法判断是否包含指定字符。由于我们已经将字符串和字符都转换为小写字母,所以在判断是否包含字符时会忽略大小写。 ### 回答2: 在Java 8中,我们可以使用字符串的`contains()`方法和正则表达式来判断一个字符串是否包含某一个字符,同时忽略大小写。 首先,我们可以使用`Pattern.CASE_INSENSITIVE`参数来创建一个忽略大小写的正则表达式模式。然后,使用`Matcher`的`find()`方法来查找整个字符串中是否存在与正则表达式匹配的字符。 下面是一个示例代码: ```java import java.util.regex.Pattern; import java.util.regex.Matcher; public class IgnoreCaseExample { public static void main(String[] args) { String str = "Hello World"; // 创建忽略大小写的正则表达式模式 Pattern pattern = Pattern.compile("a", Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(str); // 使用find()方法查找字符串是否包含某一个字符,忽略大小写 if (matcher.find()) { System.out.println("字符串中包含字符a"); } else { System.out.println("字符串中不包含字符a"); } } } ``` 这段代码中,我们创建了一个字符串`str`,并且使用`Pattern.compile()`方法创建了一个忽略大小写的正则表达式模式。然后,我们使用`Pattern.matcher()`方法创建了一个匹配器`matcher`,并在字符串`str`中查找是否存在与正则表达式匹配的字符。最后,通过使用`Matcher.find()`方法判断字符串中是否包含字符`a`,并相应地打印输出结果。 在这个示例中,由于字符串`"Hello World"`中包含字符`o`,所以输出结果是`字符串中包含字符a`。 综上所述,我们可以通过使用正则表达式和`Matcher`的方法,来判断一个字符串是否包含某一个字符,并且可以忽略大小写。 ### 回答3: 在Java 8中,要判断一个字符串是否包含某个字符并忽略大小写,可以使用字符串的`contains()`方法和`toLowerCase()`方法。 首先,将需要判断的字符串调用`toLowerCase()`方法转换为小写。然后,使用`contains()`方法来判断转换后的字符串是否包含目标字符。最后,根据`contains()`方法的返回结果来得出判断。 以下是一个示例代码: ```java public static boolean isContainsIgnoreCase(String str, char targetChar) { String lowercaseStr = str.toLowerCase(); String targetString = Character.toString(targetChar).toLowerCase(); return lowercaseStr.contains(targetString); } ``` 在上述代码中,`isContainsIgnoreCase()`方法接受两个参数:一个是需要判断的字符串`str`,另一个是目标字符`targetChar`。首先,使用`toLowerCase()`方法将`str`转换为小写形式并赋值给`lowercaseStr`。然后,将`targetChar`转换为字符串形式,并使用`toLowerCase()`方法将其转换为小写形式并赋值给`targetString`。接着,通过`contains()`方法判断`lowercaseStr`是否包含`targetString`,并将结果返回。 使用这个方法,可以判断一个字符串是否包含某个字符,而且不区分字符的大小写

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值