"shortening" 字符串的算法?

Algorithms for "shortening" strings?

我正在寻找 "shorten" 对象的(用户提供的)名称的优雅方法。更准确地说:

现在我正在寻找关于如何根据 64 个字符的名称生成这些 "reduced" 名称的想法。

与 "elegant" 我想知道 "might" 允许用户在缩短的字符串中识别有价值的东西的任何有用的想法。 比如,如果名称是 "Production Test Item A5";那么也许 "PTIA5" 可能(或可能不会)告诉用户一些有用的信息。

对长版本应用子字符串方法,trim它,如果末尾有任何空白字符,可选择从最末尾删除任何特殊字符(例如破折号),最后添加一个点,以防你想用这种方式表示你的缩写。

快速入门:

  String longVersion = "Aswaghtde-5d";

  // Get substring 0..8 characters
  String shortVersion = longVersion.substring(0, (longVersion.length() < 8 ? longVersion.length() : 8));

  // Remove whitespace characters from end of String
  shortVersion = shortVersion.trim();

  // Remove any non-characters from end of String
  shortVersion = shortVersion.replaceAll("[^a-zA-Z0-9\s]+$", "");

  // Add dot to end
  shortVersion = shortVersion.substring(0, (shortVersion.length() < 8 ? shortVersion.length() : shortVersion.length() - 1)) + ".";

  System.out.println(shortVersion);

我需要缩短名称以用作数据库中的列名。理想情况下,名称应该是用户可以识别的。我为经常出现的词建立了一个模式字典,对应 "abbreviations"。这仅适用于超过 30 个字符限制的名称。