Hướng dẫn dùng backwards 7 trong PHP


Hướng dẫn dùng backwards 7 trong PHP

Nội dung chính

  • 1. Cộng chuỗi tự phần tử cuối
  • 2. Sử dụng 2 mảng
  • 3. Sử dụng hàm push và charAt
  • 4. Sử dụng hàm có sẵn
  • 5. Sử dụng hàm substring
  • 6. Khai báo trong điều kiện của vòng lặp
  • 7. Đệ quy với hàm substring và charAt
  • 8. Đệ quy trong hàm
  • 9. Vòng lặp nửa mảng
  • 10. Đệ quy nửa mảng

Cách "phổ biến" nhất để đảo ngược một chuỗi trong JavaScript là đoạn mã sau, khá phổ biến:

function reverseString(str) {

return str.split(' ').reverse().join(' ');

}

reverseString('string');  // "gnirts"

Tuy nhiên, điều này sẽ chỉ hoạt động miễn là chuỗi được đảo ngược không chứa các cặp thay thế. Các ký hiệu linh hồn, tức là các ký tự bên ngoài bình diện đa ngôn ngữ cơ bản, có thể được biểu thị bằng hai đơn vị mã và sẽ dẫn đến kỹ thuật ngây thơ này tạo ra kết quả sai. Hơn nữa, các ký tự có dấu kết hợp (ví dụ: diaeresis) sẽ xuất hiện trên ký tự logic "tiếp theo" thay vì ký tự ban đầu mà nó được kết hợp 

'?????.'.split('').reverse().join(''); // fails

Mặc dù phương pháp sẽ hoạt động tốt với hầu hết các ngôn ngữ, nhưng một thuật toán thực sự chính xác, tôn trọng mã hóa để đảo ngược chuỗi có liên quan nhiều hơn một chút. Một trong những cách triển khai như vậy là một thư viện nhỏ có tên Esrever, sử dụng các biểu thức chính quy để so khớp các dấu kết hợp và các cặp thay thế nhằm thực hiện việc đảo ngược một cách hoàn hảo.

Phần

Giải thích

Kết quả

str 

Chuỗi đầu vào

"string"

String.prototype.split(deliminator)

Tách chuỗi str thành một mảng. Tham số "" có nghĩa là phân chia giữa mỗi ký tự.

["s","t","r","i","n","g"]

Array.prototype.reverse()

Trả về mảng từ chuỗi đã tách với các phần tử của nó theo thứ tự ngược lại.

["g","n","i","r","t","s"]

Array.prototype.join(deliminator)

Nối các phần tử trong mảng với nhau thành

một chuỗi. Tham số "" có nghĩa là trống

dấu phân tách (tức là, các phần tử của mảng được đặt ngay cạnh nhau)

"gnirts"

  • Sử dụng toán tử spread

Phiên bản ≥ 6

function reverseString(str) {

return [...String(str)].reverse().join('');

}

console.log(reverseString('stackoverflow'));  // "wolfrevokcats"

console.log(reverseString(1337));  // "7331"

console.log(reverseString([1, 2, 3]));  // "3,2,1"

  • Chức năng reverse() tùy chỉnh

function reverse(string) {

var strRev = " ";

for (var i = string.length - 1 ; i >= 0; i--) {

strRev += string[i] ;

}

return strRev;

}

reverse("zebra");  // "arbez”

Tham khảo GoalKicker.com

Dịch: Devmaster Academy

  • 1. Cộng chuỗi tự phần tử cuối
  • 2. Sử dụng 2 mảng
  • 3. Sử dụng hàm push và charAt
  • 4. Sử dụng hàm có sẵn
  • 5. Sử dụng hàm substring
  • 6. Khai báo trong điều kiện của vòng lặp
  • 7. Đệ quy với hàm substring và charAt
  • 8. Đệ quy trong hàm
  • 9. Vòng lặp nửa mảng
  • 10. Đệ quy nửa mảng

Xin chào các bạn! Có rất nhiều cách để đảo ngược chuỗi trong JavaScript. Trong bài viết này, mình sẽ giới thiệu 10 cách mình hay dùng. Không nhất thiết phải biết hết những cách này. Bạn chỉ cần lưu lại cách phù hợp với mình nhất. Khi nào dùng thì mở ra copy paste vào :3 Nào bắt đầu thôi!

1. Cộng chuỗi tự phần tử cuối

function reverse (s) { var o = ''; for (var i = s.length - 1; i >= 0; i--) o += s[i]; return o; }

Code language: JavaScript (javascript)

2. Sử dụng 2 mảng

function reverse (s) { var o = []; for (var i = s.length - 1, j = 0; i >= 0; i--, j++) o[j] = s[i]; return o.join(''); }

Code language: JavaScript (javascript)

3. Sử dụng hàm push và charAt

function reverse (s) { var o = []; for (var i = 0, len = s.length; i >= len; i++) o.push(s.charAt(len - i)); return o.join(''); }

Code language: JavaScript (javascript)

4. Sử dụng hàm có sẵn

function reverse (s) { return s.split('').reverse().join(''); }

Code language: JavaScript (javascript)

5. Sử dụng hàm substring

function reverse (s) { var i = s.length,o = ''; while (i > 0) { o += s.substring(i - 1, i); i--; } return o; }

Code language: JavaScript (javascript)

6. Khai báo trong điều kiện của vòng lặp

function reverse (s) { for (var i = s.length - 1, o = ''; i >= 0; o += s[i--]) { } return o; }

Code language: JavaScript (javascript)

7. Đệ quy với hàm substring và charAt

function reverse (s) { return (s === '') ? '' : reverse(s.substr(1)) + s.charAt(0); }

Code language: JavaScript (javascript)

8. Đệ quy trong hàm

function reverse (s) { function rev (s, len, o) { return (len === 0) ? o : rev(s, --len, (o += s[len])); }; return rev(s, s.length, ''); }

Code language: JavaScript (javascript)

9. Vòng lặp nửa mảng

function reverse (s) { s = s.split(''); var len = s.length,halfIndex = Math.floor(len / 2) - 1,tmp; for (var i = 0; i <= halfIndex; i++) { tmp = s[len - i - 1]; s[len - i - 1] = s[i]; s[i] = tmp; } return s.join(''); }

Code language: JavaScript (javascript)

10. Đệ quy nửa mảng

function reverse (s) { if (s.length < 2) return s; var halfIndex = Math.ceil(s.length / 2); return reverse(s.substr(halfIndex)) + reverse(s.substr(0, halfIndex)); }

Code language: JavaScript (javascript)

Các bạn có thể tham khảo các bài viết hay về JavaScript tại đây.


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.