Как перевернуть строку в js
Перейти к содержимому

Как перевернуть строку в js

  • автор:

Записать буквы в обратном порядке

У меня есть такой вопрос. Так как я новичок ещё только на стадии изучения JavaScript. Не могли бы вы подсказать, что нужно сделать для того, чтобы буквы были записаны в обратном порядке? Спасибо!

Отслеживать
141 1 1 золотой знак 2 2 серебряных знака 9 9 бронзовых знаков
задан 17 июн 2013 в 9:24
61 1 1 золотой знак 2 2 серебряных знака 3 3 бронзовых знака
Загони их в массив и переверни его. Аминь.
17 июн 2013 в 9:34
А как его перевернуть?
17 июн 2013 в 9:35

Вопрос на столько абстрактный, что на него можно ответить только так: взять буквы и переставить! Думайте задавая вопросы. #Gerome прям в точку ответил.

17 июн 2013 в 9:39
Интересно, для чего это вам нужно?
17 июн 2013 в 10:57
Мож уже самбоди поменяет название вопроса?
17 июн 2013 в 14:34

6 ответов 6

Сортировка: Сброс на вариант по умолчанию

var str = 'abcd'; str = str.split("").reverse().join(""); 

Отслеживать
ответ дан 17 июн 2013 в 9:38
25.8k 1 1 золотой знак 37 37 серебряных знаков 70 70 бронзовых знаков

если не нужна поддержка юникодных суррогатов, то

function reverse(s)

Если нужна, то посмотрите реализацию в esrever:

var regexSymbolWithCombiningMarks = /([\0-\u02FF\u0370-\u1AAF\u1B00-\u1DBF\u1E00-\u20CF\u2100-\uD7FF\uE000-\uFE1F\uFE30-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])([\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]+)/g; var regexSurrogatePair = /([\uD800-\uDBFF])([\uDC00-\uDFFF])/g; var reverse = function(string) < // Step 1: deal with combining marks and astral symbols (surrogate pairs) string = string // Swap symbols with their combining marks so the combining marks go first .replace(regexSymbolWithCombiningMarks, function($0, $1, $2) < // Reverse the combining marks so they will end up in the same order // later on (after another round of reversing) return reverse($2) + $1; >) // Swap high and low surrogates so the low surrogates go first .replace(regexSurrogatePair, '$2$1'); // Step 2: reverse the code units in the string var result = ''; var index = string.length; while (index--) < result += string.charAt(index); >return result; >; 

Курсы javascript

Читая статьи на Хабре иногда попадается что программистам на собеседованиях задают следующее задание.

Нужно создать функцию которая будет принимать любую текстовую строку и возвращать эту же строку, только в перевернутом виде. Тоесть передаем ‘Привет мир!’ получаем ‘!рим тевирП’.

Это задание задавалось для программистов знающих PHP или C++, но я подумал «А как бы я решил это используя JavaScript». Решение получилось очень легким.

А как бы Вы решили это задание на JavaScript ?

P.S. Свое решение выложу ближе к вечеру. Хотя уверен что его предложат одним из первых.

Как перевернуть строку в js

Задачку сделать обратный ход строки на JavaScript очень часто задают на технических собеседованиях. Вас могут попросить написать код для переворачивания строки разными методами, например, без использования встроенных методов или с помощью рекурсии.
Потенциально существуют десятки различных способов реализовать алгоритм. В этой статье будут приведены три интересных способа решения задачи переворачивания строки на JavaScript, которые предложила в своем блоге программист Соня Мойссет.

Итак, задача

Написать алгоритм на JavaScript, который перевернет строку «hello».

Решения

1. Обращаем строку с помощью встроенных функций в JS

В алгоритме мы будем использовать три метода: метод String.prototype.split(), метод Array.prototype.reverse() и метод Array.prototype.join().

  • Метод split() разбивает объект string на массив строк путём разделения строки указанной подстрокой.
  • Метод reverse() на месте обращает порядок следования элементов массива. Первый элемент массива становится последним, а последний — первым.
  • Метод join() объединяет все элементы массива в строку.

Шаг 1. Используем split() метод, чтобы вернуть новый массив.
Шаг 2. Используем reverse() метод, чтобы перевернуть созданный массив.
Шаг 3. Используем join() метод, чтобы соединить все элементы массива в строку.
Шаг 4. Возвращаем перевернутую строку.

function reverseString(str) < var splitString = str.split(""); // var splitString = "hello".split(""); // ["h", "e", "l", "l", "o"] var reverseArray = splitString.reverse(); // var reverseArray = ["h", "e", "l", "l", "o"].reverse(); // ["o", "l", "l", "e", "h"] var joinArray = reverseArray.join(""); // var joinArray = ["o", "l", "l", "e", "h"].join(""); // "olleh" return joinArray; // "olleh" >reverseString("hello");

Три метода вместе:

function reverseString(str) < return str.split("").reverse().join(""); >reverseString("hello");

2. Переворачиваем строку с помощью цикла

Шаг 1. Создаем пустую строку, в которой будет размещаться новая строка.
Шаг 2. Создаем цикл FOR.
Шаг 3. Возвращаем перевернутую строку.

function reverseString(str) < var newString = ""; /* Стартовой точкой для цикла будет (str.length - 1), что соответствует последнему символу строки — "o" До тех пор, пока i больше или равно 0, цикл будет работать Мы уменьшаем i после каждой итерации */ for (var i = str.length - 1; i >= 0; i--) < newString += str[i]; // или newString = newString + str[i]; >/* Длина нашей строки «hello» равна пяти Для каждой итерации: i = str.length – 1 и newString = newString + str[i] 1-я: i = 5 - 1 = 4, newString = "" + "o" = "o" 2-я: i = 4 - 1 = 3, newString = "o" + "l" = "ol" 3-я: i = 3 - 1 = 2, newString = "ol" + "l" = "oll" 4-я: i = 2 - 1 = 1, newString = "oll" + "e" = "olle" 5-я: i = 1 - 1 = 0, newString = "olle" + "h" = "olleh" Конец цикла*/ return newString; // "olleh" > reverseString('hello');


3. Переворачиваем строку с помощью рекурсии

Для этого решения мы будем использовать два метода: метод String.prototype.substr() и метод String.prototype.charAt().

Метод substr() возвращает указанное количество символов из строки, начиная с указанной позиции.

"hello".substr(1); // "ello"

Метод charAt() возвращает указанный символ из строки.

"hello".charAt(0); // «h"

Глубина рекурсии равна длине строки. Этот способ решения будет не самым удобным, если строка будет очень длинной.

function reverseString(str) < if (str === "") // Завершение рекурсии return ""; else return reverseString(str.substr(1)) + str.charAt(0); /* Первая часть метода рекурсии. Вы должны помнить, что у вас не будет одного вызова функции, у вас будет несколько вложен ных вызовов. Each call: str === "?" reverseString(str.subst(1)) + str.charAt(0) 1-й вызов – reverseString("Hello») вернет reverseString("ello») + "h" 2-й вызов – reverseString("ello") вернет reverseString("llo") + "e" 3-й вызов – reverseString("llo") вернет reverseString("lo") + "l" 4-й вызов – reverseString("lo") вернет reverseString("o") + "l" 5-й вызов – reverseString("o") вернет reverseString("") + "o" Вторая часть метода рекурсии. Метод попадает в условие if и наиболее вложенный вызов немедленно возвращается. 5-й вызов вернет reverseString("") + "o" = "o" 4-й вызов вернет reverseString("o") + "l" = "o" + "l" 3-й вызов вернет reverseString("lo") + "l" = "o" + "l" + "l" 2-й вызов вернет reverserString("llo") + "e" = "o" + "l" + "l" + "e" 1-й вызов вернет reverserString("ello") + "h" = "o" + "l" + "l" + "e" + "h" */ >reverseString("hello");

Заключение

Практиковать написание алгоритмов на языках программирования — полезное занятие для развития логики и отличная практика кодирования. Задачу обратной строки можно решить несколькими способами: пойти по короткому пути или воспользоваться более сложными методами. Надеемся, что статья была вам полезна!

JavaScript | Как перевернуть строку?

Как записать строку в обратном порядке силами JavaScript?

В этой публикации приведены три способа переворота строки в обратном порядке, где первая буква становится последней, а последняя — первой.

Способ № 1 — Функция переворачивания строки через литерал массива , оператор spread , метод revese() и метод join()

function reverseStr(str)< return [. str].reverse().join("") >

Логика работы функции

var stroka = 'tpircSavaJ'

Все строки в JavaScript являются итерируемыми объектами, а значит могут быть приведены к массиву. Воспользуемся оператором троеточия.

var massiv = [. stroka]

Теперь в переменной massiv находится массив из символов строки.

Получили массив из строки - JavaScript

Его последовательность элементов совпадает с последовательностью символов в строке. Сейчас мы можем воспользоваться методом reverse() и перевернуть массив.

massiv.reverse()

Теперь элементы отзеркалились — последний стал первым.

Перевернули массив из букв - JavaScript

Чтобы обратно вернуть строку, нам нужно воспользоваться методом join() и передать в качестве разделителя пустую строку. Она пустая потому что мы хотим слепить букву к букве (символ к символу).

massiv.reverse().join("")

Перевернули массив из букв и склеили - JavaScript

В результате мы перевернули строку и получили слово « JavaScript » из слова « tpircSavaJ »

Собственный метод для объектов-прототипов String

String.prototype.reverseStr = function()< return [. this].reverse().join("") >

Пример работы метода и его вызова:

Собственный метод для переворота строк - JavaScript

Способ № 2 — через цикл for

У всех строк есть свойство длины — «length«. Мы можем перевернуть строку при помощи самописной функции и цикла for :

function reverseStr(str)< var a = ""; for (i = 0; i < str.length; i++)< a += str[(str.length - 1) - i]; > return a; >

Переворот строки циклом for - JavaScript

Собственный метод для объектов-прототипов String

String.prototype.reverseStr = function()<  var a = "";   for (i = 0; i < this.length; i++)   a += this[(this.length - 1) - i]; >  return a; >

Пример работы метода и его вызова:

Расширили методы для строк - перевернули строку циклом for - JavaScript

Способ № 3 — через метод [@@match] для экземпляров регулярных выражений

Выражение переворота будет выглядеть так:

/./g[Symbol.match]("Какая-то строка").reverse().join("")

Мы используем регулярное выражение с глобальных флагом для полного сопоставления строки слева направо от начала и до конца. Шаблон регулярного выражения оформлен в синтаксисе Атома, который оформлен точкой. Точка обозначает один любой символ.

К методу [@@match] мы можем обратиться только по имени [Symbol.match]. Обратите внимание, что вызов этого метода НЕ СОПРОВОЖДАЕТСЯ ТОЧКОЙ.

Работа метода сопоставления строки возвращает нам массив, а дальше действия как в первом примере — это методы . reverse () и . join («»).

Перевернули строку через регулярное выражение - JavaScript

Зачем переворачивать строку?

В некоторых ситуациях нужно поменять направление сопоставления строк при помощи регулярных выражений. По умолчанию это сопоставление производится слева-направо.

После переворота строки первые сопоставления по сути будут являться последними сопоставлениями.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *