javascript - 如何在 JavaScript 中制作缩写/首字母缩略词?

标签 javascript

编码新手 '我爱你' -> 'ily'。 我尝试过以多种方式重写代码,但 console.log 只显示第一个给定单词的第一个字母。

function makeAbbr(words) {
  let abbrev = words[0];
  let after = 0;
  let i = 0;
  for (const letter of words) {
    if (letter === '') {
      i = words.indexOf('', after);
      abbrev += words[i + 1];
    }
    after++;
  }
  return abbrev;
}
const words = 'a bc def';
let result = makeAbbr(words);
console.log(result)

最佳答案

不使用数组。但您确实应该了解它们。

  1. 首先 trim 前导和尾随空格。
  2. 将第一个字符添加到您的首字母缩略词。
  3. 循环遍历字符串的其余部分,如果前一个字符是空格(而当前字符不是),则将当前字符添加到首字母缩略词。

function makeAbbr(words) {
  words = words.trim();
  const length = words.length;
  let acronym = words[0];

  for(let i = 1; i < length; i++) {
    if(words[i - 1] === ' ' && words[i] !== ' ') {
       acronym += words[i];
    }
  }

  return acronym;
}
console.log(makeAbbr('I love you'));
console.log(makeAbbr('I     love     you'));
console.log(makeAbbr('   I    love    you   '));


这是 GottZ 的版本

function w(char) {
   char = char.toLocaleLowerCase();
   const coll = Intl.Collator('en');
   const cmpA = coll.compare(char, 'a');
   const cmpZ = coll.compare(char, 'z');

   return cmpA >= 0 && cmpZ <= 0;
}

function makeAbbr(words) {
  words = words.trim();
  const length = words.length;
  if(!length) return '';

  let acronym = words[0];

  for(let i = 1; i < length; i++) {
    if(!w(words[i - 1]) && w(words[i])) {
       acronym += words[i];
    }
  }

  return acronym;
}
console.log(makeAbbr('I love you'));
console.log(makeAbbr('I     love     you'));
console.log(makeAbbr('   I    love    you   '));
console.log(makeAbbr('   \tI ...  ! love \n\r   .you   '));
console.log(makeAbbr('   \tI ...  ! Löve \n\r   .ÿou   '));

关于javascript - 如何在 JavaScript 中制作缩写/首字母缩略词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72290810/

相关文章:

javascript - 如何使用 jQuery 遍历定位多个重复元素之一?

javascript - 单击更改图像的位置

javascript - 当我使用另一个 iframe 时,如何从主页向 iframe 发送数据?

javascript - Backbone.Model没有方法 'extend'

javascript - 尝试在我的代码中使用 await with promise - 怎么做?

javascript - Google 电子表格 - 删除范围保护时出错

javascript - 对象函数循环覆盖 javascript?

javascript - ExtJS 4.1.1a : Item in grid is deselected after record has been modified with set-method

javascript - 单击 HTML 中的输入时如何转到下一个选项卡?

javascript - jQuery窗口 'hashchange' switch语句效率