当前位置: 首页 > 面试题库 >

自动省略Java中的字符串

侯兴为
2023-03-14
问题内容

Java中有没有一种方法可以自动省略一个字符串?仅使用Java,而不是其他库。

谢谢。


问题答案:

根据您的用例,将省略号放在字母之间可能会很有用(即,在末尾添加字母以提供一些上下文):

/**
 * Puts ellipses in input strings that are longer than than maxCharacters. Shorter strings or
 * null is returned unchanged.
 * @param input the input string that may be subjected to shortening
 * @param maxCharacters the maximum characters that are acceptable for the unshortended string. Must be at least 3, otherwise a string with ellipses is too long already.
 * @param charactersAfterEllipsis the number of characters that should appear after the ellipsis (0 or larger) 
 * @return the truncated string with trailing ellipses
 */
public static String ellipsize(String input, int maxCharacters, int charactersAfterEllipsis) {
  if(maxCharacters < 3) {
    throw new IllegalArgumentException("maxCharacters must be at least 3 because the ellipsis already take up 3 characters");
  }
  if(maxCharacters - 3 > charactersAfterEllipsis) {
    throw new IllegalArgumentException("charactersAfterEllipsis must be less than maxCharacters");
  }
  if (input == null || input.length() < maxCharacters) {
    return input;
  }
  return input.substring(0, maxCharacters - 3 - charactersAfterEllipsis) + "..." + input.substring(input.length() - charactersAfterEllipsis);
}

省略号算法可能还需要其他更复杂的功能:如果需要将文本放入图形元素中并且使用的是比例字体,则必须测量String的长度。

对于Swing /
AWT来说应该是java.awt.Font.getStringBounds。在这种情况下,简单的算法可以一次将字符串切成一个字母并加上省略号,直到字符串符合给定的限制为止。如果经常使用,http://www.codeproject.com/KB/cs/AutoEllipsis.aspx?
msg = 3278640 (C#,但应该足够容易转换为Java)中详细说明的二等分方法可以节省一些处理器周期。



 类似资料:
  • 问题内容: 我敢肯定,我们所有人都在Facebook状态(或其他位置)上看到省略号,然后单击“显示更多”,并且只有另外两个字符左右。我猜这是由于懒惰的编程,因为肯定有一种理想的方法。 我的人把苗条的字符算作“半个字符”,但是当省略号几乎没有隐藏任何字符时,这并不能解决。 有没有理想的方法?这是我的: 语言并不重要,但可以标记为Java,因为这是我最感兴趣的内容。 问题答案: 我喜欢让“瘦”字符算作

  • 问题内容: 如果我使用 Lombok* 指定 @AllArgsConstructor ,它将生成一个构造函数,用于设置所有声明的(不是最终的,不是静态的)字段。是否可以省略某些字段,而为所有其他字段保留生成的构造函数? * 问题答案: 不,那是不可能的。有一个功能请求来创建一个,您可以在其中指定所涉及字段的列表。 全面披露:我是Lombok项目的核心开发人员之一。

  • 问题内容: 我正在查看一些代码,并看到了以下符号。我不确定这三个点的含义以及您所说的名称。 谢谢。 问题答案: 这意味着此方法可以接收多个Object作为参数。为了更好地低估,请从此处检查以下示例: 省略号(…)标识可变数量的参数,并在以下求和方法中进行了演示。 在JVM的限制内,使用所需的任意多个用逗号分隔的整数参数来调用sumsum方法。一些示例:sum(10,20)和sum(18,20,30

  • 省略 不推荐省略 0 值单位,原因如下: CSS 规范中可以省略单位只有 [<length-percentage>](https://drafts.csswg.org/css-values-3/#typedef-length-percentage),其他比如角度单位 deg 在 Chrome 中可以省略, 这是浏览器的 Bug。 注:可以省略的单位包括:%|em|ex|ch|rem|vw|vh|v

  • 问题内容: 我在MySQL中发现了一个非常奇怪的错误,该错误已在此处报告: 错误#60166 此错误的原因是什么??? 除了我在错误报告中描述的以外,是否有人可以提供一些建议来解决此问题? 如果有人能帮助我在Windows上安装MySQL的UDF与的错误,我会非常! 无论如何,关于 似乎有一个非常奇怪的行为。 在此先感谢您的帮助! [编辑] 在这里,我已经在错误报告中给出了可能的解决方案: 建议的

  • 本文向大家介绍Powershell截取字符串并添加省略号的例子,包括了Powershell截取字符串并添加省略号的例子的使用技巧和注意事项,需要的朋友参考一下 限制字符串大小 支持所有版本。 确保你输出的字符串不会过长,当字符串超过你指定的长度你可以用下面办法将其缩短。