String的contains方法判断中文字符串突然无效果了

想利用SpringBoot集成Mybatis做一个从MySQL中查找账号数据的小工具,映射器和dao层还有实体类就不放了,因为正常跑是没问题了,就是业务层里面写的判断逻辑不知道什么原因String的contains方法判断一个中文字符串是否包含另外一个中文字符串的时候不知道出了什么问题,输入的字符串长了倒是没问题,输入的字符串短了,却取不出数据库中包含此短字符串的长字符串对应的那些数据。
相关代码:

    @Autowired
    private AccountDao accountDao;
    
    public List<Account> findAccounts(String inputStr, String byWhat) {
        List<Account> rst = new ArrayList<>();
        try {
            List<Account> AllAccounts = accountDao.getAll();
            Method getByWhat = Account.class.getMethod("get" + byWhat);
            for (Account acc : AllAccounts) {
                String rstData = String.valueOf(getByWhat.invoke(acc)).trim();
                System.out.print( "\t" + rstData + "\n\n");
                if (rstData.contains(inputStr) || inputStr.contains(rstData) 
                || rstData.startsWith(inputStr) || inputStr.startsWith(rstData)) {
                    System.out.println(rstData);
                    rst.add(acc);
                }
            }
            return rst;
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("Reflect throws exception!!!!!");
            rst.clear();
            return rst;
        }
    }

这是业务层的主要方法,因为想整合一下查找方法,既可能用备注信息note查找又可能用username查找,所以利用反射把getter方法整合了一下, 到底使用哪个查找根据控制台传参控制。
为了确定反射取出的数据没有问题还特意遍历输出了取出的查找依据的数据,结果输出并没有问题,只是不知道为什么如果输入的字符串比数据库中取出的字符串长,则四条判断都没有问题,但如果输入的字符串短,而取出的字符串长,那么这个长字符串始终不能加到返回出来的rst里。
也就是说inputStr.contains(rstData)和inputStr.startWith(rstData)结果完全没问题,而rstData.startWith(inputStr)和rstData.contains(inputStr)好像完全没起作用。
想来想去还是放一下一部分控制台输出吧

输入的Remark参数值为:腾讯
2019-06-04 23:09:51.881  INFO 1288 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2019-06-04 23:09:52.209  INFO 1288 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
    奇虎360

    百度

    B站

    博客园

    CSDN

    当当

    印象笔记

    码云

    GitHub

    Git远程

    Google

    微软

    微软

    爱奇艺

    京东

    JetBrains

    LeetCode

    网易

    腾讯

腾讯
    腾讯

腾讯
    思否

    淘宝

    淘宝

    Tomcat

    VPS

    微信小程序

    新浪微博

    小米

    优酷

    知乎

    Postman

    MongoDB

    腾讯云开发平台

    网易

    码云

ID: 19
label: QQ_01
note: 腾讯

ID: 20
label: QQ_02
note: 腾讯

两个一模一样的字符串倒是找出来了,像“腾讯云开发平台”这个长字符串则查找不出来,但是我单独用JavaApplication测过contains()了,是可以找出这个长字符串的,怎么到springboot里面就找不出来了

阅读 9.6k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题