Сторнирование строки в JavaScript - PullRequest
47 голосов
/ 23 октября 2009

Я пытаюсь отменить ввод строки

var oneway = $('#inputfield').val();
var backway = oneway.reverse();

но firebug говорит мне, что oneway.reverse() это не функция. Есть идеи?

Спасибо

Ответы [ 14 ]

0 голосов
/ 06 ноября 2014

Эта функция обратного прототипа реализована с использованием «this». Если вы видите консоль журнала «this», она сгенерирует массив и будет иметь свойство length. Так что это !!! Просто используйте обратный цикл for, как показано во фрагменте кода.

String.prototype.reverse = function () {
    console.log(this);
    var result = "";
    var len = this.length;
    
    for (i = (len-1); i >= 0 ; i--) {
        result += this[i];
    }
    return result;
};

alert("elahnu jaknap".reverse());
0 голосов
/ 07 августа 2014

Матиас Биненс, ваш код работает отлично, большое спасибо!

Я преобразовываю ваш код в функцию, таким образом пользователи могут скопировать его отсюда.

Спасибо!

//The function reverse a string,  JavaScript’s has internal character encoding so we are
//unable to reverse the string in the "easy ways". For example the TL;DR: ? is an astral
//symbol, and JavaScript exposes it as two separate code units.
function ReverseString(string){
    //-
    var regexSymbolWithCombiningMarks = /([\0-\u02FF\u0370-\u1DBF\u1E00-\u20CF\u2100-\uD7FF\uDC00-\uFE1F\uFE30-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF])([\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]+)/g;
    var regexSurrogatePair = /([\uD800-\uDBFF])([\uDC00-\uDFFF])/g;
    //-

    //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) {
            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 value
    return result;
}
0 голосов
/ 20 марта 2014
String.prototype.strReverse = function() {

    var newstring = "";

    for (var s=0; s < this.length; s++) {
        newstring = this.charAt(s) + newstring;
    }

    return newstring;
};
0 голосов
/ 23 октября 2009

Я думаю, вы обнаружите, что на самом деле reverse () не является функцией в jQuery. Кстати, jQuery действительно хорош для манипулирования вашим DOM, но на самом деле не для манипулирования строками как таковыми (хотя вы, вероятно, можете получить плагины / написать свой собственный) для этого.

Лучший способ, с помощью которого я нашел обратную строку в javascript - это сделать следующее:

String.prototype.reverse = function(){
splitext = this.split("");
revertext = splitext.reverse();
reversed = revertext.join("");
return reversed;
}

Найдено по адресу: http://www.bytemycode.com/snippets/snippet/400/

Я думаю, вы обнаружите, что если вы вставите что-то выше в свой код, ваш вызов .reverse () должен сработать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...