Languages
[Edit]
PL

JavaScript - jak zamieni─ç wszystkie wyst─ůpienia znaku w ci─ůgu znaków (ang. string)

3 points
Created by:
Dirask JS Member
3610

W tym artykule przyjrzymy si─Ö r├│┼╝nym sposobom zast─Öpowania wszystkich wyst─ůpie┼ä tekstu w ci─ůgu znak├│w w JavaScript.

Najcz─Östszym problemem w JavaScript jest brak metody replaceAll.

// ONLINE-RUNNER:browser;

var input = 'tekst-1 tekst-2 tekst-3';
var output = input.split('tekst').join('____');

console.log(output); // ____-1 ____-2 ____-3

Bardziej szczeg├│┼éowe i pogrupowane rozwi─ůzania znajduj─ů si─Ö poni┼╝ej.

1. Przyk┼éad podzia┼éu i ┼é─ůczenia tekstu

Ta sekcja pokazuje, jak podzieli─ç ci─ůg wed┼éug jakiego┼Ť tekstu, a nast─Öpnie po┼é─ůczy─ç go, wstawiaj─ůc nowy tekst mi─Ödzy nimi.

// ONLINE-RUNNER:browser;

var input = 'tekst-1 tekst-2 tekst-3';

var searchText = 'tekst';
var newText = '____';

var output = input.split(searchText).join(newText);

console.log(output); // ____-1 ____-2 ____-3

2. Przykłady oparte na wyrażeniach regularnych

W tej sekcji pokazano, jak zamieni─ç wszystkie wyst─ůpienia tekstu na obiekt┬áRexExp. Domy┼Ťlnie┬ámetoda┬áreplace u┼╝ywana z wyra┼╝eniem regularnym zast─Öpuje tylko jedno wyst─ůpienie tekstu. Rozwi─ůzaniem tego problemu jest dodanie flagi dla obiektu wyra┼╝enia.

a) Bezpieczne podej┼Ťcie

Ten przyk┼éad pokazuje, jak zamieni─ç wszystkie wyst─ůpienia dowolnego tekstu. Takie podej┼Ťcie jest zalecane, je┼Ťli zast─Öpowany tekst mo┼╝e zawiera─ç znaki takie┬ájak: .*+?^=!:${}()|[]/\.

// ONLINE-RUNNER:browser;

var ESCAPE_EXPRESSION = /([.*+?^=!:${}()|\[\]\/\\])/g;

function escapeExpression(expressionText) {
  	expressionText = expressionText.replace(ESCAPE_EXPRESSION, '\\$1');

  	return new RegExp(expressionText, 'g'); // globalna flaga wyszukiwania
}

function replaceAll(text, what, to) {
    var whatExpression = escapeExpression(what);

    return text.replace(whatExpression, to);
}

// Przykład użycia:

var inputText = 'To? jest? m├│j tekst.';

var searchText = 'jest?';
var newText = '__';

var outputText = replaceAll(inputText, searchText, newText);

console.log(outputText);

Uwaga: funkcja escapeExpression usuwa wszystkie znaki z wzorca wyrażenia regularnego.

b) Niebezpieczne podej┼Ťcie

Ten przyk┼éad pokazuje, jak zamieni─ç wszystkie wyst─ůpienia tekstu. Jest zalecane tylko wtedy, gdy wszystkie zast─Öpowane znaki zosta┼éy┬ázamienione z┬á\\. G┼é├│wn─ů zalet─ů tego podej┼Ťcia jest brak niepotrzebnego przetwarzania zast─Öpowanego tekstu.

// ONLINE-RUNNER:browser;

var inputText = 'To? jest? m├│j tekst.';

var searchText = 'jest\\?'; // zamieniony znak "?"
var newText = '__';

var searchRegex = new RegExp(searchText, 'g'); // globalna flaga wyszukiwania
var outputText = inputText.replace(searchRegex, newText);

console.log(outputText );

Zobacz r├│wnie┼╝

Native Advertising
­čÜÇ
Get your tech brand or product in front of software developers.
For more information Contact us
Dirask - we help you to
solve coding problems.
Ask question.

ÔŁĄ´ŞĆ­čĺ╗ ­čÖé

Join