Reverse a String

string.png

解题思路还是比较简单的:
1、使用 String.split() 将字符串转换成数组;
2、使用 Array.reverse() 将数组进行反转;
3、 使用Array.join() 将数组转为字符串;
完整的代码是:

  1. function reverseString(str) {
  2. return str.split('').reverse().join("");
  3. }
  4. reverseString("hello");

string02.png
但是,在调试过程中,我发现了String.split()一个有趣的现象,里面参数不同,结果差别很大,如下:

var str = 'The quick brown fox jumps over the lazy dog.';

var a = str.split();
var b = str.split("");
var c = str.split(" ");

第一种情况:

console.log(a);
console.log(a.length);

结果是:
split.png

当 split() 里面没有传任何参数的时候,会将整个字符串传回数组中,数组的长度为1;

第二种情况:

console.log(b);
console.log(b.length);

结果是:
split2.png

当参数是空字符串的时候,会将字符串中每个字符字符进行分割,也包括空格;数组长度为44;

第三种情况:

console.log(c);
console.log(c.length);

结果是:
split3.png

当参数是 “ “ 的时候,会以空格来分割字符串;数组长度为9;

在查看MDN中发现后面也提到了字符串的翻转方法,第一个方法和我写的一样,但是评论说不够健壮,提供了另一种方法,如下:

注意这并非一种很健壮的逆转字符串的方法:

const str = 'asdfghjkl';
const strReverse = str.split('').reverse().join(''); // 'lkjhgfdsa'
// split() returns an array on which reverse() and join() can be applied
如果字符串包含图形素集群,即使使用Unicode感知的拆分(use for example esrever instead),也不能工作。

const str = 'résumé';
const strReverse = str.split(/(?:)/u).reverse().join('');
// => "́emuśer"
Bonus: use === operator to test if the original string was palindrome.

第二种方法结果也是可以实现的:
split4.png

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。