5

Chcę zamienić białe przestrzenie w dowolnej stosunkowo nowoczesnej przeglądarce (czyli w IE, wersja> = 7).Dopasowywanie niełamliwego białego obszaru w IE7 i IE8 w JavaScript

Zatem biorąc pod uwagę ciąg "Hello world!" zrobilibyśmy:

<script type="text/javascript"> 
document.write("Result: '" + "Hello world!".replace(/\s/g, '') + "'"); 
</script> 

Które Oczekujemy na wyjściu: Result: 'Helloworld!'

Ale w IE7 i IE8 choć nie przy użyciu non-łamliwy miejsca jak jedna z nich : &#160;&nbsp; == == \u00A0

Na przykład

<script type="text/javascript"> 
document.write("Result: '" + String.fromCharCode(160).replace(/\s/g, '') + "'"); 
</script> 

Wyjdzie Result: 'Helloworld!' w FF i IE> = 9 i Result : ' ' w IE7 i IE8. Co do cholery?

Zastanawiam się, czy to jedyny wyjątek? Nie mogłem znaleźć w tej sprawie zbyt wielu informacji. Czy jest możliwe użycie Wyrażenia regularnego, które usuwa wszystkie białe spacje, w tym, które nie są łamliwe?

Odpowiedz

2

Użyj tego jeden:

replace(/(?:\s|\xA0|&nbsp;|&#160;)+/g, '') 

replace(/[\s\xA0]+/g, '') 
+0

Oryginalna odpowiedź nie działa. ' ' jest bezużyteczne po zakodowaniu znaków, co stanowi cały problem. –

+0

@Asad - W mojej oryginalnej odpowiedzi dodałem ' ' i ' ' do wzorca, aby zapewnić, że rozwiązanie działa z każdą przeglądarką, nawet tą, która nie koduje znaków specjalnych. –

+0

Nie, po prostu włączyłeś '\ s' i sekwencję znaków'   'w oryginalnej odpowiedzi. W twoich edycjach zawarłeś kod szesnastkowy, a także równie bezużyteczny ' '. –