I\'ve come across an error in my web app that I\'m not sure how to fix.
Text boxes are sending me the long dash as part of their content (you know, the special long dash
This code might help:
text = text.replace(/\u2013|\u2014/g, "-");
It replaces all –
(–) and —
(—) symbols with simple dashes (-).
DEMO: http://jsfiddle.net/F953H/
There may be more characters behaving like this, and you may want to reuse them in html later. A more generic way to to deal with it could be to replace all 'extended characters' with their html encoded equivalent. You could do that Like this:
[yourstring].replace(/[\u0080-\uC350]/g,
function(a) {
return '&#'+a.charCodeAt(0)+';';
}
);
There are three unicode long-ish dashes you need to worry about: http://en.wikipedia.org/wiki/Dash
You can replace unicode characters directly by using the unicode escape:
'—my string'.replace( /[\u2012\u2013\u2014\u2015]/g, '' )
That character is call an Em Dash. You can replace it like so:
str.replace('\u2014', '');
Here is an example Fiddle: http://jsfiddle.net/x67Ph/
The \u2014
is called a unicode escape sequence. These allow to to specify a unicode character by its code. 2014 happens to be the Em Dash.