[ Leksykon ] [ JavaScript ] [ Metody ] [ String() ] [ Wyrażenia regularne ]
String replace()
[_] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] [Z]
Przykłady:
const tekst = 'Przykładowy tekst. TAK! tak!';
console.log(tekst.replace('TAK', 'NIE'));
// "Przykładowy tekst. NIE! tak!"
const kod = /TAK/ig;
console.log(tekst.replace(kod, 'NIE'));
// "Przykładowy tekst. NIE! NIE!"
const tekst = "Przykładowy tekst. TAK! TAK!";
const nowytekst = tekst.replace(/tak!/ig, "NIE!");
console.log(nowytekst);
// "Przykładowy tekst. NIE! NIE!"
function formatowanie(nowytekst) {
function zastapic(match, offset, string) {
return (offset > 0 ? "-" : "") + match.toLowerCase();
}
return nowytekst.replace(/[A-Z]/ig, zastapic);
}
const tekst = 'Przykładowy tekst. TAK! TAK!';
console.log(formatowanie(tekst));
//"p-r-z-y-kł-a-d-o-w-y -t-e-k-s-t. -t-a-k! -t-a-k!"
const kod = /(\w+)\s(\w+)/;
const tekst = "TAK NIE";
const nowytekst = tekst.replace(kod, "$2 $1");
console.log(nowytekst);
// "NIE TAK"
function zastapic(match, p1, p2, p3, offset, string) {
return [p1, p2, p3].join(" * ");
}
const tekst = "Przykładowy tekst.1234567890!@#$".replace(/([^\d]*)(\d*)([^\w]*)/, zastapic);
console.log(tekst); // abc - 12345 - #$*%
console.log("1000".replace(/(1)/, "$5"));
console.log("1000".replace(/(f)|(g)/, "$5"));
function zadanie(f) {
function oblicz(match, p1, offset, string) {
return `${((p1 - 32) * 5) / 9}C`;
}
const temperatura = String(f);
const kod = /(-?\d+(?:\.\d*)?)F\b/g;
return temperatura.replace(kod, oblicz);
}
const tekst = '100F';
console.log(zadanie(tekst));
// "37.77777777777778C"
function zadanie(match, ...argumenty) {
const typ = typeof argumenty.at(-1) === "object";
const dane = typ ? argumenty.at(-3) : argumenty.at(-2);
return `${match} (${dane}) `;
}
console.log("Przykładowy tekst. TAK! TAK!".replace(/(tekst)/, zadanie));
// "Przykładowy tekst (12) . TAK! TAK!"
console.log("Przykładowy tekst. TAK! TAK!".replace(/(?<group>tekst)/, zadanie));
// "Przykładowy tekst (12) . TAK! TAK!"
Jeśli pierwszy parametr jest pustym łańcuchem, zamiana jest dodawana na początku ciągu.
"abc".replace("", "_"); // "_abc"
Opis:
Metoda replace() zwraca nowy ciąg z jednym, kilkoma lub wszystkimi dopasowaniami zastąpionymi przez drugi parametr. Pierwszy parametr może to być ciąg znaków lub obiekt z Symbol.replace metodą, wyrażenie regularne. Każda wartość, która nie ma Symbol.replace metody, zostanie przekształcona w łańcuch. Drugi argument może być ciągiem znaków lub funkcją. Jeśli jest to łańcuch, zastąpi pod łańcuch dopasowany przez pierwszy parametr. Jeśli jest to funkcja, będzie wywoływana przy każdym dopasowaniu, a zwracana przez nią wartość jest używana jako tekst zastępczy. Zwracana wartość nowy ciąg z wszystkimi dopasowaniami wzorca zastąpionymi określonym zamiennikiem. Ta metoda nie modyfikuje wartości ciągu, na której jest wywoływana. Zwraca nowy ciąg. Wzór strunowy zostanie zastąpiony tylko raz. Aby wykonać globalne wyszukiwanie i zamianę, użyj wyrażenia regularnego z g flagą lub użyj replaceAll() zamiast niego.
Ciąg zastępczy może zawierać następujące specjalne wzorce zastępcze:
Wzór | Wstawki |
$$ | Wstawia "$" |
$& | Wstawia dopasowany podciąg |
$` | Wstawia część ciągu poprzedzającą dopasowany podciąg |
$' | Wstawia część ciągu, która następuje po dopasowanym pod łańcuchu |
$n | Wstawia nth ( 1-indexed) grupę przechwytywania, gdzie n jest dodatnią liczbą całkowitą mniejszą niż 100 |
$<Name> | Wstawia nazwaną grupę przechwytywania, gdzie Name jest nazwą grupy |
$ni $<Name>są dostępne tylko wtedy, gdy pierwszy argument jest RegExpobiekt. Jeśli jest ciągiem lub odpowiednia grupa przechwytywania nie jest obecna w wyrażeniu regularnym, wzorzec zostanie zastąpiony literałem. Jeśli grupa jest obecna, ale nie jest dopasowana, zostanie zastąpiona pustym łańcuchem.
function zastapic(match, p1, p2, /* …, */ pN, offset, string, groups) {
return wymienic;
}
Możesz określić funkcję jako drugi parametr. W takim przypadku funkcja zostanie wywołana po przeprowadzeniu dopasowania. Wartość zwracana przez funkcję zostanie użyta jako łańcuch zastępczy.
function zastapic(match, p1, p2, p3, offset, string) {
return [p1, p2, p3].join(" * ");
}
const tekst = "Przykładowy tekst.1234567890!@#$".replace(/([^\d]*)(\d*)([^\w]*)/, zastapic);
console.log(tekst); // abc - 12345 - #$*%
Funkcja zostanie wywołana wiele razy dla każdego pełnego dopasowania do zastąpienia, jeśli wyrażenie regularne w pierwszym parametrze jest globalne.
Argumenty funkcji:
match - Dopasowany podciąg. Odpowiada $&.
p1, p2, …, pN - Ciąg n znaleziony przez grupę przechwytywania. W tym nazwane grupy przechwytywania, pod warunkiem, że pierwszym argumentem replace() jest obiekt RegExp. Odpowiada $1, $2, itd. powyżej. Na przykład, jeśli pierwszy argument replace() jest, /(\a+)(\b+)/to p1 jest dopasowaniem do \a+, i p2 jest dopasowaniem do \b+. Jeśli grupa jest częścią dysjunkcji np. "abc".replace(/(a)|(b)/, replacer), niedopasowaną alternatywą będzie undefined.
offset - Przesunięcie dopasowanego podciągu w obrębie całego badanego ciągu. Na przykład, jeśli cały łańcuch to 'qwer', a dopasowany podłańcuch to 'we', to ten argument będzie miał postać 1.
string - Badany jest cały ciąg.
groups - Obiekt, którego kluczami są używane nazwy grup, a wartościami są dopasowane części, undefined jeśli nie są dopasowane. Występuje tylko wtedy, gdy pierwszy argument replace() zawiera co najmniej jedną nazwaną grupę przechwytywania.
Dokładna liczba argumentów zależy od tego, czy pierwszy argument jest obiektem RegExp, a jeśli tak, to ile ma grup przechwytywania.
Linki:
replaceAll() -
RegExp.prototype[@@replace]()
[ Wyrażenia regularne ]