jquery найти / заменить массивы? - PullRequest
1 голос
/ 10 октября 2011

Я пытаюсь узнать о сопоставлении с шаблоном с помощью jQuery, и у меня возник вопрос ...

В php я могу сделать что-то вроде этого:

$find = array("-", "_", "+");
$replace = array("X", "Y", "Z");

$string = "The alphabet ends in -, _, +";
$newstring = str_replace($find, $replace, $string); 

Что даст: Алфавит оканчивается на X, Y, Z

Есть ли способ сделать это с помощью jquery?Где я могу определить массив значений для поиска и заменить их значениями в другом массиве?Я понял, что могу сделать замену (/ pattern /, "Something"), но надеялся найти способ дублировать этот php-код в jquery?

Ответы [ 2 ]

0 голосов
/ 10 октября 2011

Вот дупл

function str_replace (search, replace, subject, count) {
    var i = 0,
        j = 0,
        temp = '',
        repl = '',
        sl = 0,
        fl = 0,
        f = [].concat(search),
        r = [].concat(replace),
        s = subject,
        ra = Object.prototype.toString.call(r) === '[object Array]',
        sa = Object.prototype.toString.call(s) === '[object Array]';
    s = [].concat(s);
    if (count) {
        this.window[count] = 0;
    }

    for (i = 0, sl = s.length; i < sl; i++) {
        if (s[i] === '') {
            continue;
        }
        for (j = 0, fl = f.length; j < fl; j++) {
            temp = s[i] + '';
            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
            s[i] = (temp).split(f[j]).join(repl);
            if (count && s[i] !== temp) {
                this.window[count] += (temp.length - s[i].length) / f[j].length;
            }
        }
    }
    return sa ? s : s[0];
}

str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');

Output >> 'hemmo, mars'

Проверьте это http://phpjs.org/functions/str_replace:527

0 голосов
/ 10 октября 2011

См. здесь .

String.prototype.replaceArray = function(find, replace) {
  var replaceString = this;
  var regex; 
  for (var i = 0; i < find.length; i++) {
    regex = new RegExp(find[i], "g");
    replaceString = replaceString.replace(regex, replace[i]);
  }
  return replaceString;
};

var textarea = $(this).val();
var find = ["<", ">", "\n"];
var replace = ["&lt;", "&gt;", "<br/>"];
textarea = textarea.replaceArray(find, replace);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...