"shortening" 字符串的算法?
Algorithms for "shortening" strings?
我正在寻找 "shorten" 对象的(用户提供的)名称的优雅方法。更准确地说:
- 我的用户可以输入自由文本(用作某些对象的 "name"),他们最多可以使用 64 个字符(包括空格、标点符号...)
- 除了那个"long"名字;我们还有一个 "reduced" 名称(恰好 8 个字符);某些旧版界面需要
现在我正在寻找关于如何根据 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 个字符限制的名称。
我正在寻找 "shorten" 对象的(用户提供的)名称的优雅方法。更准确地说:
- 我的用户可以输入自由文本(用作某些对象的 "name"),他们最多可以使用 64 个字符(包括空格、标点符号...)
- 除了那个"long"名字;我们还有一个 "reduced" 名称(恰好 8 个字符);某些旧版界面需要
现在我正在寻找关于如何根据 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 个字符限制的名称。