Ответ 1
Этот код может помочь:
text = text.replace(/\u2013|\u2014/g, "-");
Он заменяет символы all –
(-) и —
(-) простыми штрихами (-).
Я обнаружил ошибку в своем веб-приложении, что я не уверен, как это исправить.
Текстовые поля отправляют мне длинную тире как часть их содержимого (вы знаете, специальный длинный штрих, который MS Word автоматически вставляет иногда). Однако я не могу найти способ заменить его; так как если я попытаюсь скопировать этот символ и поместить его в оператор JavaScript str.replace, он не будет отображаться правильно, и он сломает script.
Как я могу это исправить?
Конкретный характер, который его убивает -.
Кроме того, если это помогает, я передаю значение как параметр GET, а затем кодирую его в XML и отправляя на сервер.
Этот код может помочь:
text = text.replace(/\u2013|\u2014/g, "-");
Он заменяет символы all –
(-) и —
(-) простыми штрихами (-).
Этот символ вызывает Em Dash. Вы можете заменить его так:
str.replace('\u2014', '');
Вот пример Fiddle: http://jsfiddle.net/x67Ph/
\u2014
называется unicode escape-последовательность. Они позволяют указывать символ Юникода по его коду. 2014 - это Эм-Даш.
В этом случае может быть больше персонажей, и вы можете повторно использовать их в html позже. Более общий способ борьбы с ним может заключаться в замене всех "расширенных символов" их эквивалентом, закодированным в HTML. Вы могли бы сделать это Вот так:
[yourstring].replace(/[\u0080-\uC350]/g,
function(a) {
return '&#'+a.charCodeAt(0)+';';
}
);
Есть три юникодовых длинно-тихих штриха, о которых вам нужно беспокоиться: http://en.wikipedia.org/wiki/Dash
Вы можете заменить символы Unicode напрямую, используя escape-код unicode:
'—my string'.replace( /[\u2012\u2013\u2014\u2015]/g, '' )