Wyrażenie regularne - Cytat

0

Cześć.
Potrzebuje w stringu zadeklarowanym za pomocą backtics zamienić wszystkie wyrażenia " cos cos cos...." na kursywę.
Czyli np.

const text = `"To była sroga zima" - Powiedział kapitan. "Tak" - Odparł majtek`

Zamienić na:

const textItalic = `<span class="italic">To była sroga zima</span> - Powiedział kapitan. <span class="italic">Tak</span> - Odparł majtek`

Napisałem coś takiego ale nie działa jak należy:

function drawItalics(quote) {
      const re = new RegExp(`"[a-zA-Z0-9]+"`, "g");
      return quote.replace(re, `<span class="italic">${re}</span>`);
}
0

Napisz co oznacza "nie działa tak jak należy" - chyba nie oczekujesz że napiszemy za Ciebie unit testy?

1

Spróbuj tak (u mnie działa):

function drawItalics(quote) {
  const re = new RegExp(/"([^"]*)"/, "g");
  return quote.replace(re, '<span class="italic">$1</span>');
}
0

@Freja Draco: Jednak smoki są szybsze od ludzi ;) Chciałem napisać to ale bez użycia regex'ów, ale mnie wyprzedziłaś :(

0
cerrato napisał(a):

@Freja Draco: Jednak smoki są szybsze od ludzi ;) Chciałem napisać to ale bez użycia regex'ów, ale mnie wyprzedziłaś :(

@cerrato: No można by jakąś pętlą co drugi cudzysłów podmieniać, ale regexem pójdzie pewnie szybciej. Ewentualnie przyjąć założenie, że ' "' = ‹i› a '" ' = ‹/i›, ale to trochę ryzykowne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1