“缩短”字符串的算法?

时间:2015-01-20 12:37:58

标签: string algorithm

我正在寻找优雅的方式来缩短" (用户提供的)对象名称。更确切地说:

  • 我的用户可以输入自由文本(用作"名称"某些对象),他们最多可以使用64个字符(包括空格,标点符号......)
  • 除此之外" long"名称;我们还有一个"减少"名称(正好8个字符);一些传统接口所需的

现在我正在寻找关于如何生成这些"减少"名称,基于64个字符的名称。

"优雅"我想知道任何有用的想法"可能"允许用户在缩短的字符串中识别具有值的内容。 比如,如果名称是"生产测试项目A5&#34 ;;那么也许" PTIA5"可能(或可能不)告诉用户一些有用的东西。

2 个答案:

答案 0 :(得分:2)

将子串方法应用于长版本,修剪它,以防末尾有任何空白字符,可选择从最末端删除任何特殊字符(如破折号),最后添加一个点,以备不时之需用这种方式表示你的缩写。

快速破解让你入门:

  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);

答案 1 :(得分:2)

我需要缩短名称以充当数据库中的列名称。理想情况下,用户应该可以识别名称。我为带有相应“缩写”的常用单词建立了模式词典。仅适用于超过30个字符的名称。