【问题标题】:Remove a part of string based on its given length with replaceAll in Java在 Java 中使用 replaceAll 根据字符串的给定长度删除字符串的一部分
【发布时间】:2023-01-12 21:23:23
【问题描述】:

我知道有不同的方法可以解决这个任务,但我需要一种使用 replaceAll() 方法的特定方法。我只是在表达式中坚持正确的条件。

所以我有这样的方法:

    public static void handleComments(List<Comment> comments, int maxTextLength) {
            comments.replaceAll(comment -> comment.getText().length() > maxTextLength ?  *what should be here?* : comment);
        }

    class Comment {
        private final String text;
    ... getter and setter

接下来是案例:我将一些 cmets 和最大评论长度传递给方法。该方法应采用 cmets 列表,然后,如果评论长度 > maxTextLength,它返回新评论,该评论是原始评论的副本,但更短(具有 maxTextLength 个字符),如果评论长度 < maxTextLength,它只返回相同的内容评论(或者它也可以是具有相同字符数的副本)。

更新: 示例如下 - 我们限制(输入)每个字符串 30 个字符,如果 (>) 超过 30 个字符,该方法将删除每个注释中的所有字符。

示例输入:

30

好美!它在哪里

我不知道,我刚找到在网上!

完美的!

示例输出:

好美!它在哪里

我不知道,我刚找到

完美的!

【问题讨论】:

  • 你能给出一些具体的例子,说明你希望在传递特定参数时改变什么,你希望保持不变的东西(以及为什么),...
  • 你想切断你的字符串以适应最大长度吗?如果是这种情况,使用 replaceAll 确实不是可行的方法。
  • 听起来像带有条件运算符 ?: 的子字符串会更好。
  • 尝试使用 comment.substr(comment.getText(), maxTextLength)
  • 为什么不用substring?听起来这个用例 100% 匹配

标签: java string collections


【解决方案1】:

您从未显示过评论类。我们可以在评论上设置文本吗?我们可以创建一个新的给构造函数上的文本吗?我假设是后者。

然后将*what should be here?*替换为

 new Comment(comment.getText().substring(0, maxTextLength-3) + "...")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    相关资源
    最近更新 更多