Метод replace
Обновлен: Ноябрь 2007
Возвращает копию строки с текстом, замененным с помощью регулярного выражения или строки поиска.
function replace(rgExp : RegExp, replaceText : String) : String
Аргументы
rgExp
Обязательный. Экземпляр объекта Regular Expression, содержащий шаблон регулярного выражения и установленные флаги. Также может быть объектом String или литералом. Если аргумент rgExp не является объектом Regular Expression, он преобразуется в строку и затем выполняется поиск точного соответствия результату этого преобразования; попытка преобразовать строку в регулярное выражение не предпринимается.replaceText
Обязательный. Объект String или строковый литерал, содержащий текст, которым требуется заменить все успешно найденные соответствия аргумента rgExp в текущем строковом объекте. В JScript 5.5 или более поздней версии аргумент replaceText может также быть функцией, возвращающей текст для замены.
Заметки
Результатом метода replace является текущий строковый объект после выполнения указанных замен.
Ниже указаны переменные соответствия, которые можно использовать для определения последнего найденного соответствия и содержащей его строки. Переменные соответствия можно использовать при замене текста, если строка для замены должна определяться динамически.
Знаки |
Значение |
---|---|
$$ |
$ (JScript 5.5 или более поздней версии) |
$& |
Указывает фрагмент текущего строкового объекта, который полностью совпадает с шаблоном. (JScript 5.5 или более поздней версии). |
$` |
Указывает фрагмент текущего строкового объекта, который предшествует совпадению, описанному переменной $& (JScript 5.5 или более поздней версии). |
$' |
Указывает фрагмент текущего строкового объекта, который следует за совпадением, описанным переменной $& (JScript 5.5 или более поздней версии). |
$n |
n-ная найденная подстрока, где n — отдельная цифра от 1 до 9 (JScript 5.5 или более поздней версии). |
$nn |
nn-ная найденная подстрока, где nn — двузначное десятичное число от 01 до 99 (JScript 5.5 или более поздней версии). |
Если аргумент replaceText является функцией, то для каждого частичного совпадения вызывается функция, количество аргументов которой равно m + 3, где m — число круглых скобок, обозначающих отдельные шаблоны в аргументе rgExp. Первым аргументом является подстрока, поиск которой выполняется. Следующие m аргументов — это все совпадения, обнаруженные во время поиска. Аргумент с номером m + 2 — это смещение в текущем строковом объекте, содержащем найденное совпадение, а аргумент с номером m + 3 — текущий строковый объект. Результатом является строка, в которой все найденные подстроки заменены соответствующий значением, возвращенным вызываемой функцией.
Метод replace обновляет свойства глобального объекта RegExp.
Пример
В следующем примере кода показано использование метода replace для замены первого вхождения артикля "The" артиклем "A". Обратите внимание, что выполняется замена только вхождения "The", поскольку в шаблоне учитывается регистр.
function ReplaceDemo(){
var r, re; //Declare variables.
var ss = "The man hit the ball with the bat.\n";
ss += "while the fielder caught the ball with the glove.";
re = /The/g; //Create regular expression pattern.
r = ss.replace(re, "A"); //Replace "The" with "A".
return(r); //Return string with replacement made.
}
Кроме того, метод replace может заменять подвыражения в шаблоне. В следующем примере меняются местами пары слов в строке.
function ReplaceDemo(){
var r, re; //Declare variables.
var ss = "The rain in Spain falls mainly in the plain.";
re = /(\S+)(\s+)(\S+)/g; //Create regular expression pattern.
r = ss.replace(re, "$3$2$1"); //Swap each pair of words.
return(r); //Return resulting string.
}
В следующем примере, который работает в JScript 5.5 или более поздней версии, выполняется преобразование градусов по Фаренгейту в градусы по Цельсию и демонстрируется использование функции в качестве аргумента replaceText. Чтобы посмотреть работу этой функции, передайте строку, содержащую число, непосредственно за которым будет следовать буква "F" (например, "Вода закипает при температуре 212").
function f2c(s) {
var test = /(\d+(\.\d*)?)F\b/g; //Initialize pattern.
return(s.replace
(test,
function($0,$1,$2) {
return((($1-32) * 5/9) + "C");
}
)
);
}
document.write(f2c("Water freezes at 32F and boils at 212F."));