2014-09-03 3 views
1

Привет, хорошие друзья :)JQuery заменить несколько строк в элементе, а не заменить элемент

У меня есть вопрос о jquery. Есть функция в jquery, чтобы заменить многие слова, которые были отображены в объекте или массиве.

Пример в PHP:

<?php 
    $textBefore = "PHP is amazing open source programmer language, 
        there many webs around the world that are built using php"; 
    $forReplace = array("amazing","programmer","webs"); 
    $replacement = array("powerfull","programming","websites"); 
    $textAfter = str_replace($forReplace , $replacement , $textBefore); 
    echo $textAfter; 
?> 

будет производить

PHP is powerfull open source programming language, 
there many websites around the world that are built using php 

Как сделать подобную вещь в JQuery? Я сделал это, чтобы снизить производительность сервера, поэтому я решил сделать эту работу в браузере. Потому что содержимое fr заменить на одной странице просмотра слишком много.

Заранее спасибо.

ответ

1

Вам не нужно JQuery, просто использовать метод замены в JavaScript.

var text = 'PHP is amazing open source programmer language, there many webs around the world that are built using php'; 

text = text.replace('amazing', 'powerful'); 
text = text.replace('programmer', 'programming'); 
text = text.replace('webs', 'websites'); 

Вы можете повторить метод str_replace РНР как так:

function str_replace(search, replace, subject) { 
    for (i=0; i<replace.length; i++) { 
     subject = subject.replace(search[i], replace[i]); 
    } 
    return subject; 
} 

var subject = "This is a test string."; 
var search = ['test', 'string']; 
var replace = ['cool', 'thang']; 

subject = str_replace(search, replace, subject); 

\\ subject is now 'This is a cool thang'; 
+0

Я уже знаю это, но то, что мне нужно, - это функция одновременного запуска всего поворота. Означает ли это, что я должен делать это снова и снова без отображения объекта? Это последнее? – kefy

+0

Потому что это тоже работа, я прошу проголосовать за ваш ответ. :) – kefy

+0

Я добавил код, чтобы показать вам, как реплицировать метод str_replace PHP. –

2
var value = $("#text").val(); // value = 9.61 use $("#text").text() if you are not on select box... 
value = value.replace(".", ":"); // value = 9:61 
// can then use it as 
$("#anothertext").val(value); 
+0

это не является массивом, хотя, вероятно, можно исправить с jquery.each() –

+0

я уже знаю, что но мне нужна функция одновременного запуска всего поворота. Означает ли это, что я должен делать это снова и снова без отображения объекта? Это последнее? – kefy

+0

Использовать каждый метод() – Florin

1

Вы можете достичь этого с помощью одного цикла.

var text = "This is some sample text."; 
var target = ['some', 'text']; 
var replace = ['replaced', 'sentence']; 

for(var i = 0; i < replace.length; i++){ 
    text = text.replace(target[i], replace[i]) 
} 

Demo

+0

Отличный человек, это то, что я ищу. Wonderfull and many thanks :) – kefy

1

См phpjs.org, который имеет JavaScript реализаций функций PHP.

Код для str_replace приведен ниже. Источник: http://phpjs.org/functions/str_replace/

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]; 
} 

Использование:

$textBefore = "PHP is amazing open source programmer language,there many webs around the world that are built using php"; 
$forReplace = ["amazing","programmer","webs"]; 
$replacement = ["powerfull","programming","websites"]; 
$textAfter = str_replace($forReplace , $replacement , $textBefore); 

$textAfter будет PHP is powerfull open source programming language,there many websites around the world that are built using php

+0

Пожалуйста, старайтесь избегать ссылок только на ответы, а добавьте соответствующий код. –

+0

@hinata: возникли проблемы с форматированием, когда я копировал и вставлял код. поэтому просто дал ссылку. С этого момента это будет иметь в виду. –

Смежные вопросы