Java中如何从字符串提取单词并转换为小写?
解决字符串拆分后转小写的问题
嘿,这个坑我之前踩过!你直接在split("\\s+")结果上调用toLowerCase()无效,核心原因是:split()返回的是String数组,而Java的数组并没有toLowerCase()方法——这个方法是单个String对象的成员方法,只能作用于单个字符串。
下面给你两种更优的实现方式,比遍历数组逐个转换更简洁高效:
方案一:先转全小写再拆分(推荐,性能更优)
如果你的需求只是把所有提取到的单词转成小写,最直接高效的方式是先把整个输入字符串转成小写,再执行拆分操作。这样只需要一次字符串转换,避免了遍历数组的额外开销:
String[] arrayOfWords = aNovelInAString.toLowerCase().split("\\s+");
注意:如果输入字符串首尾有空格,拆分后可能会出现空字符串,你可以用split("\\s+", 0)来自动忽略末尾的空元素,或者之后手动过滤。
方案二:用Stream API函数式处理(灵活扩展)
如果之后还需要对拆分后的单词做其他操作(比如过滤、映射等),用Java 8+的Stream API会更优雅,可读性也更强:
import java.util.Arrays; // ... String[] arrayOfWords = Arrays.stream(aNovelInAString.split("\\s+")) .map(String::toLowerCase) // 逐个转小写 .filter(s -> !s.isEmpty()) // 可选:过滤空字符串 .toArray(String[]::new);
这种方式把数组转成流后,通过map操作统一处理每个字符串,最后再转回数组,代码逻辑清晰,扩展性好。
内容的提问来源于stack exchange,提问作者kaun jovi
相关产品推荐
相关产品推荐

