Автоматическое создание акронима

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

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
В чем разница между методом "==" и equals()
В чем разница между методом "==" и equals()
Это один из наиболее часто задаваемых вопросов новичкам на собеседовании. Давайте обсудим его на примере.
Замена символа по определенному индексу в JavaScript
Замена символа по определенному индексу в JavaScript
В JavaScript существует несколько способов заменить символ в строке по определенному индексу.
0
0
513
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

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

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
Ответ принят как подходящий

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

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

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

Это была опечатка, и я называл это простым способом!

Silviu Postavaru 24.10.2008 01:47

Я выбрал ваш пример, потому что никогда бы не подумал, что трактую тире как отдельное слово.

Silviu Postavaru 24.10.2008 01:49

Пример в JavaScript, предполагающий, что нехватка места перед Last в 3-м примере является опечаткой:

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

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

Другие вопросы по теме