dromara / hutool

🍬A set of tools that keep Java sweet.
https://hutool.cn
Other
28.91k stars 7.48k forks source link

StrUtil split 判断问题 #3660

Closed yanye666 closed 1 month ago

yanye666 commented 1 month ago

版本情况

JDK版本: openjdk_8_201 hutool版本: 5.8.29(请确保最新尝试是否还有问题)

问题描述(包括截图)

旧版本 5.5.2 这个代码会返回[] list,但是最新版返回 [''],这是个较大的语义改动?是否应该保留原语义,空串/null 都返回[] list

  1. 复现代码
        int sum = StrUtil.split("", ',').stream().mapToInt(Integer::parseInt).sum();  //预期无异常,实际异常 parseInt
        System.out.println(StrUtil.split("",',').size()); 预期返回0,实际返回1
looly commented 1 month ago

你试下最新版本,5.8.29,是返回[]

image

yanye666 commented 1 month ago
    System.out.println(StrUtil.split("",',').size());

最新版也是如此,不应该直接sout,看size

yanye666 commented 1 month ago

int sum = StrUtil.split("", ',').stream().mapToInt(Integer::parseInt).sum(); 这样的代码就直接报错了

yanye666 commented 1 month ago

@looly 重新看下,这个问题

yanye666 commented 1 month ago

@looly 来来来看看

looly commented 1 month ago

@yanye666 这个稍后我回复,有配置的,不要着急。

looly commented 1 month ago

@yanye666 sorry回复晚了。

新版本使用了更加清晰的语义:

// 这样会保留""作为第一个元素
StrUtil.split("", ',');

如果希望得到旧版本中的空列表,可以:

// 得到空列表
StrUtil.splitTrim("", ',');