String篇 (字符串)

Anagrams of string (with duplicates) (字符串异位(和重复))

使用递归。
遍历给定字符串中的每个字母,用其余字母创建所有部分字母。
使用 Array.map()将字母与每个部分字母组合,然后使用 Array.reduce()将所有字母组合到一个数组中。当给定字符串数量等与 21时做简单处理。

const anagrams = str => {
  if (str.length <= 2) return str.length === 2 ? [str, str[1] + str[0]] : [str];
  return str.split('').reduce((acc, letter, i) =>
    acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map(val => letter + val)), []);
};
// anagrams('abc') -> ['abc','acb','bac','bca','cab','cba']

Capitalize first letter of every word (所有单词的第一个字母大写)

使用 replace()去查找单词的第一个字母并使用 toUpperCase() 改为大写。

const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase());
// capitalizeEveryWord('hello world!') -> 'Hello World!'

Check for palindrome (检查回文)

使用toLowerCase()转换字符串并用 replace()删除其中的非字母数字字符。
然后,使用 split('') 分散为单个字符,再使用 reverse()join('')倒序合并后与原字符进行比较。

const palindrome = str => {
  const s = str.toLowerCase().replace(/[\W_]/g,'');
  return s === s.split('').reverse().join('');
}
// palindrome('taco cat') -> true

Reverse a string (反转一个字符串)

使用数组解构和 Array.reverse()来反转字符串中字符的顺序。
使用 join('') 组合字符获得一个字符串。

const reverseString = str => [...str].reverse().join('');
// reverseString('foobar') -> 'raboof'

Sort characters in string (alphabetical) 字符串排序(按字母顺序排列)

使用 split('') 切割字符串,使用 Array.sort 通过 localeCompare()去排序,再使用 join('') 组合。

const sortCharactersInString = str =>
  str.split('').sort((a, b) => a.localeCompare(b)).join('');
// sortCharactersInString('cabbage') -> 'aabbceg'

Truncate a String (字符串截断)

确定字符串的长度是否大于num
将字符串截断为所需的长度,在末尾或原始字符串后附加 ...

const truncate = (str, num) =>
  str.length > num ? str.slice(0, num > 3 ? num - 3 : num) + '...' : str;
// truncate('boomerang', 7) -> 'boom...'
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容