2013-05-07 5 views
5

Je dois remplacer les caractères unicode définis sur hereRemplacer les caractères espace unicode

J'ai ce jusqu'à présent, mais il semble enlever tout l'espace, y compris les barre d'espace standard:

var str = "Hello this is a test  of the site"; 
str= str.replace(/[ \u00A0\u1680​\u180e\u2000-\u2009\u200a​\u200b​\u202f\u205f​\u3000]/g,'') 

Résultat - Hellothisisatestofthesite

Je veux seulement enlever le caractère unicode qui est U + 2003 entre «test» et «de» dans la chaîne.

Répondre

7

Retirez l'espace régulier que vous avez d'abord dans le modèle:

str = str.replace(/[\u00A0\u1680​\u180e\u2000-\u2009\u200a​\u200b​\u202f\u205f​\u3000]/g,''); 
+0

+1 - Moi, je n'ai pas vu ça – Bojangles

+4

@Bojangles: Les personnages de l'espace sont comme des trous noirs; ils ne peuvent être vus que de la façon dont ils affectent d'autres choses, qui sont visibles. :) – Guffa

+0

Très bien mis. Je ne l'ai pas remarqué dans l'OP car il n'était pas formaté en code – Bojangles

3

essayez ceci:

var str = "Hello this is a test  of the site"; 
str= str.replace(/[\u00A0\u1680​\u180e\u2000-\u2009\u200a​\u200b​\u202f\u205f​\u3000]/g,'') 

même que vous avez fait, mais avec des '' (espace régulier)

-1

Je suppose que vous devez utiliser la séquence d'échappement pour les espaces (15.10.2.12 de la norme) qui est \ s, et que vous souhaitez remplacer plusieurs espaces par un seul:

str= str.replace(/\s+/g,' ') ; 
+0

Unicode n'est pas deux espaces réguliers. – silver

Questions connexes