jak přidat mezeru v řetězci javascript


Odpověď 1:

Jiná odpověď poukázala na „mezery mezi“, takže jeden znak nedává téměř žádný smysl. Pokud však chcete mezery * kolem * tohoto znaku, pak další možností, kterou je třeba zvážit, je Regex.

Regex, nebo * Regulární výrazy *, je speciální formát řetězce, který je užitečný jako formát dotazování. Hodně o regulárním výrazu lze přečíst na MDN

dokumentace

, ale jeho krása je, že je to velmi silný a velmi robustní nástroj.

Pokud bychom například měli rozdělit řetězec na znak `/` a poté se k němu znovu připojit pomocí znaku „/“ (mezera-lomítko), mohli bychom potenciálně narazit na problém. Co když tam uživatel již přidal mezery? Právě jsme zdvojnásobili mezery.

Místo toho pomocí regexu můžeme říci „s tímto řetězcem, když náš dotaz narazí na slovo * bezprostředně následované lomítkem, za kterým okamžitě následuje další slovo * (tj. Bez mezer), pak jej nahraďte tímto. Takto by to mohlo vypadat:

'category / subcategory'.replace (/ (\ w +) \ / (\ w +) / g,' $ 1 / $ 2 ');

A to je vše. Tento řádek definuje řetězec, který se má otestovat (`kategorie / podkategorie`), poté použije nahradit. Regulární výraz je ta první část: `/ (\ w +) \ / ((\ w +) / g`, a to je ta nejpřehlednější část celé věci. Pojďme to rozebrat:

  • `/… / G` - toto je značka regulárního výrazu a písmeno` g` naznačuje, že pokud se setká s více než jedním, nahraďte je všechny.
  • „(\ w +)` - to jsou vlastně tři samostatné části. „(…)“ Vytváří * skupinu pro zachycení *, což nám umožňuje pamatovat si, co v ní najdete. Znak „\ w` označuje znak typu slova, znak„ bez mezer “. A znak „+“ říká „všechny znaky typu word za sebou“ (tj. Mezi mezerami nebo řídicími znaky).
  • `\ /` - to nám umožní porovnat lomítko. To je kontrolní znak, takže mu musíme * uniknout *, což je přední zpětné lomítko.

Celkově tedy. ten řádek říká „najdi * a zapamatuj si * slovo bezprostředně následované lomítkem a druhým * také zapamatovaným * slovem.“

Proč říkáme javascriptovému motoru, aby si ta slova pamatoval? Protože pomocí příkazu „replace (…)“ nám náš regulární výraz umožňuje definovat * vzor *. V řetězci, který je druhým parametrem pro „nahradit (…)“, definujeme „$ 1“ a „$ 2“ - to jsou dvě skupiny zachycení, o které jsme požádali, aby si je pamatovali. Zde říkáme „nyní použijte první zapamatované slovo, přidejte mezeru a lomítko a vložte druhé zapamatované slovo.

Hodně se toho děje a není to základní téma, ale je to velmi silné. Náš regex výše nahradí pouze lomítka, která * ještě nemají * mezery kolem nich, a ponechá je s mezerami samotnými.

Tím se navíc zabrání dalšímu kroku vynucení řetězce do pole a zpět do řetězce. Jen moje 0,02


Odpověď 2:

Můžete použít regulární výraz k nahrazení / s * /// s * za „/“.

Rozpis regulárního výrazu:

/ s * znamená prázdné místo nula nebo vícekrát

// znamená '/', ale '/' musí být uniknuto. Bohužel s jiným /

Pak je tu další / s *.

Takže zde nahradíme posloupnost nulových nebo více úvodních mezer, za kterou následuje '/' následované nulovou nebo více koncových mezer za „/“


Odpověď 3:

Nejsem si úplně jistý, že chápu, co se rozumí přidáním mezer mezi znak „/“, ale předpokládám, že chcete něco jako „příklad / příklad“ změnit na „příklad / příklad“. Pokud je to váš případ, můžete použít

String.prototype.split ()

dohromady s

Array.prototype.join ()

:

const str = 'příklad / příklad / příklad';console.log (str.split ('/'). join ('/');// Očekávaný výstup:// 'příklad / příklad / příklad'

Metoda split () změní řetězec na pole řetězců oddělením řetězce v každé instanci zadaného oddělovacího řetězce. V tomto případě je oddělovač jednoduše '/'

Metoda join () vytvoří a vrátí nový řetězec zřetězením všech prvků v poli oddělených zadaným oddělovacím řetězcem. V tomto případě ' / '


Odpověď 4:

a2a

Zpracování řetězců a nahrazování znaků jsou velmi běžné úkoly JS a dělám je často. Používám regex s `String.prototype.replace`, můj navrhovaný regex dotaz a implementace jsou jednodušší a přímočařejší.

console.log ('hello / cruel / world'.replace (/ [/] / g,' / '));tisky: ahoj / kruté / svět

POZNÁMKA: Tento regulární výraz nebere v úvahu další mezery, které tam již mohou být, ale tato kritéria nebyla v otázce uvedena. V produkčním kódu bych však zohlednil možné mezery navíc. V tomto případě potřebujete trochu pokročilejší regex, který používá negativní lookahead a lookbehind.

var regex = / (?console.log ('slash / spaced / but / add / here'.replace (regex,' / '));tiskne: lomítko / rozložené / ale / ne / zde

Odpověď 5:

Přední lomítko „/“ není speciální znak, takže mezera se přidává obvyklým způsobem, tj. Stisknutím mezerníku. To by měl být případ, pokud nechápu úplně, na co se snažíte poukázat.


Odpověď 6:

Můžete použít literály šablon k formátování čehokoli v JavaScriptu es6. To je nejlepší způsob, jak použít všechny symboly, aniž byste museli používat únikové znaky.


Odpověď 7:

var mystring = “ahoj / úžasný / svět”;

mystring.split („/“). join („/“);

Nebo

mystring = mystring.replace („/“, „/“);


Odpověď 8:

% 20 by mělo fungovat.