JavaScript - как заменить подстроку? - PullRequest
13 голосов
/ 31 октября 2008

Это простой. Я хочу заменить подстроку другой подстрокой на стороне клиента, используя JavaScript.

Исходная строка 'original READ ONLY'

Я хочу заменить 'READ ONLY' на 'READ WRITE'

Любой быстрый ответ, пожалуйста? Возможно, с фрагментом кода JavaScript ...

Ответы [ 4 ]

25 голосов
/ 31 октября 2008

String.replace() основано на регулярном выражении; если вы передадите строку в качестве первого аргумента, сделанное из нее регулярное выражение не будет включать флаг ‘g’ (global) Эта опция необходима, если вы хотите заменить все вхождения строки поиска (как правило, это то, что вы хотите).

Альтернативный не-регулярное выражение идиома для простой глобальной замены строки:

function string_replace(haystack, find, sub) {
    return haystack.split(find).join(sub);
}

Это предпочтительно, если строка find может содержать символы, которые имеют нежелательное специальное значение в регулярных выражениях.

Так или иначе, любой метод подходит для примера в вопросе.

12 голосов
/ 31 октября 2008

Хорошо Резюме . Он основан на регулярном выражении, если вы используете регулярное выражение, вы можете указать модификаторы i и g (без учета регистра (i), которые будут совпадать независимо от регистра и глобальные (g), которые заменят все вхождения), если вы используете строковое обозначение Вы будете преобразованы в регулярное выражение, и вы не сможете указать любой модификатор.

<script type="text/javascript">

var str1="Visit Microsoft!";
var str2 = str1.replace(/microsoft/i, "W3Schools"); //Will work, per the i modifier 

var str3 = "original READ ONLY";
var str4 = str3.replace("ONLY", "WRITE"); //Will also work

</script>
3 голосов
/ 31 октября 2008
stringObject.replace(findstring,newstring)
2 голосов
/ 31 октября 2008

Я предпочитаю подход регулярных выражений,

newstring = oldstring.replace (/ regexforstringtoreplace /, 'new string');

также стоит рассмотреть модификаторы регулярных выражений g и i, они выполняют глобальную замену (т. Е. Заменяют все вхождения) и делают их нечувствительными к регистру.

например:

<script type="text/javascript">

var str = "this is a String";

document.write(str.replace(/\s/g, "_"));

would print: this_is_a_string

document.write(str.replace(/s/gi, "f"));

would print "thif if a ftring"

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