Java中使用replaceAll处理Comment列表的字符串截断实现问题
用List.replaceAll()实现评论截断的解决方案
核心实现代码
你只需要在replaceAll()的lambda表达式中,针对超长评论创建新的Comment实例并传入截断后的文本即可,完整的handleComments方法如下:
public static void handleComments(List<Comment> comments, int maxTextLength) { comments.replaceAll(comment -> comment.getText().length() > maxTextLength ? new Comment(comment.getText().substring(0, maxTextLength)) : comment ); } class Comment { private final String text; public Comment(String text) { this.text = text; } public String getText() { return text; } }
逻辑说明
- 由于
Comment类的text是final修饰的不可变属性,无法直接修改原对象的文本内容,因此必须创建新的Comment实例来承载截断后的内容。 substring(0, maxTextLength)会精准截取原文本的前maxTextLength个字符,刚好满足截断需求。- 对于长度未超过限制的评论,直接返回原对象即可,无需额外创建副本。
示例验证
当传入maxTextLength=30时:
- 输入评论
What a nice view! Where is it ?,原长度超过30,截断后得到What a nice view! Where is it - 输入评论
I do not know, I just found it on the internet!,截断后得到I do not know, I just found it - 输入评论
Perfect!长度未超过30,直接保留原内容
内容的提问来源于stack exchange,提问作者pragmatic
相关产品推荐
相关产品推荐

