Wpis z mikrobloga

Mireczki, mam zagwozdkę i nie wiem jak podejść do tematu. Mam na stronie artykuły o charakterze naukowym. Wprowadzając dane zdarzają się symbole stopni celsjusza czyli °C, CO2 z indeksem dolnym itd. No i problem tkwi, że tekst zazwyczaj jest niesformatowany i posiada zapis OC zamiast ww. stopni C, CO2 zamiast 2 w indeksie dolnym itd. No i teraz chciałbym robić to automatycznie. Wykrywać dane ciągi znaków i je zamieniać. O ile w przypadku CO2 jest to prosta sprawa o tyle w przypadku OC jest już gorzej. Mogą się zdarzyć słowa typu mOCy, mOC, pomOC itd. W związku z tym czy mogę załatwić wszystkie przypadki jedną funkcją? A jeżeli nie to w jaki sposób mogę wyłapywać ciągi xxOC i zamieniać je na xx°C przy założeniu, że xx to liczba?

#javascript #programowanie
  • 8
@Marmite: @shogun12345678:

a więc mam coś takiego - https://codepen.io/eMeM/pen/MWyEmJx
Działa połowicznie dobrze. Połowicznie bo owszem zamienia symbole, ale tylko te pierwsze i tylko w przypadku kilku p. Natomiast gdy mamy jeden dlugi p z kilkoma OC to już nie działa. Dodałem zatem /g w patternie no i to zadziałało w obu przypadkach. Zarówno jak mam jeden długi p oraz kilka oddzielnych p ALE po pierwsze zjada mi liczby a po
@TeflonDon: na zjadanie liczb tu masz poprawkę:
const pattern = /(\d{2})OC/g;
let paragraphs = document.querySelectorAll('p');

paragraphs.forEach( (paragraph) => {

if ( pattern.test(paragraph.innerText) ) {

paragraph.innerText = paragraph.innerText.replace(pattern, '$1°C');

}

});
@TeflonDon: w skrócie, zamieniane są CAŁE wyrażenia wyłapane przez regexp (włącznie z liczbą, bo przecież jest w regexpie), więc trzeba część tych wyrażeń którą chcesz zachować wziąć w nawias i potem wstawić je jeszcze raz w podmieniany ciąg poprzez odwołanie do pierwszego znalezionego nawiasu ($1)