Автоматизированное создание аббревиатуры - PullRequest
0 голосов
/ 24 октября 2008

Есть ли простой способ создать аббревиатуру из строки?

First_name Middle_name Last_name => FML
first_name middle_name last_name => FML
First_name-Middle_name Last_name => F-ML
first_name-middle_name last_name => F-ML

Ответы [ 4 ]

2 голосов
/ 24 октября 2008
Tokenize the string on whitespace.
For each token1,
  Tokenize on dash.
  For each token2
    Take token2[0] and capitalize
    if not first token2, prepend with dash
    Concatenate to result2
  Concatenate to result
1 голос
/ 24 октября 2008

Пример в JavaScript, предполагая нехватку места перед Последним в третьем примере является опечаткой:

var testStrings = [
'First_name Middle_name Last_name',
'first_name middle_name last_name',
'First_name-Middle_name Last_name',
'first_name-middle_name last_name'
];
var re = /\b(\w)\w*\b(-?)\s*/g;
var mr;
for (var i = 0, l = testStrings.length; i < l; i++)
{
  var name = testStrings[i];
  var abbr = name.replace(re, function (match, ini, dash)
  {
    return ini.toUpperCase() + dash;
  });
  alert(abbr);
}

Должно быть легко (?) Адаптироваться к другим языкам.

1 голос
/ 24 октября 2008

Означает ли языковая независимость, что вы должны использовать псевдокод? Если нет, то в Ruby:

"First_name-Middle_nameLast_name".gsub('-', ' - ').gsub(/\B[A-Z]+/, ' \&').split(' ').map { |s| s[0..0] }.join.upcase => "F-ML"

Если окажется, что недостаток места в третьем примере является опечаткой, вы можете пропустить второй вызов до gsub (с уродливым регулярным выражением)

0 голосов
/ 24 октября 2008

Я не знаю об агностике языка, но я бы сделал функцию, которая принимает параметр args [], чтобы ввести все ваши строки, затем перебрать их и соединить первый символ каждого с другой возвращаемой строкой.

Редактировать: Ударь это. Не понял, что это была единственная строка. Вам нужно было бы перебрать все символы в поисках специальных типов символов. Любые буквы после первой будут игнорироваться, пока вы не получите пробел или специальный символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...