[js] emotikony

0

Siemano

Mam problem z wydajnym systemem emotikonów w mojej aplikacj js. Kilka moich pomysłów które nie wypaliły:

':/' jest zamieniany na (..)

Problem jest jednak taki że koliduje się on z ardresami url.

' :/ ' jest zamieniany (..)

Jednak jest to mało wygodne dla użytkowników, ponieważ każdy musi dodawać przed i po spacje nawet jak jest to koniec zdania.

Ma ktoś jakieś inne pomysły?

0

:// zmień np. na ::, wtedy zamieniasz :/ na emotki i przywracasz :: do :/

1

Można użyć wyrażeń regularnych i czegoś, co się zwie z angielskiego negative lookahead (ew. w kombinacji z positive lookahead):

http://www.regular-expressions.info/lookaround.html#lookahead

Dzięki temu możesz zamienić tylko te ciągi ":/", przed którymi jest któryś z wymienionych znaków, lub nie ma jakiegoś innego znaku.

Jeśli wydajność jest tu problemem, możesz porównać to rozwiązanie z tym, o którym napisał @Demonical Monk. Wyrażenia regularne są mniej wydajne od zwykłych funkcji, jeśli zamiana ma być prosta. Ale akurat w JavaScripcie jest nieco inaczej, bo jeśli chcesz zrobić zamianę wszystkich ciągów jednego rodzaju na inne, to i tak musisz użyć wyrażeń regularnych (z flagą 'g'), bo normalnie String.replace zamienia tylko jedno wystąpienie ciągu.

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