Вопрос по javascript – Удалить длинную черту из строки в JavaScript?

15

В моем веб-приложении обнаружена ошибка, которую я не знаю, как исправить.

Текстовые поля посылают мне длинную черту как часть их содержимого (вы знаете, специальную длинную черту, которую MS Word автоматически вставляет иногда). Однако я не могу найти способ заменить его; поскольку, если я попытаюсь скопировать этот символ и поместить его в оператор JavaScript str.replace, он не будет правильно отображаться и нарушит работу сценария.

Как я могу это исправить?

Конкретный символ, который его убивает, это & # x2014 ;.

Кроме того, если это помогает, я передаю значение в качестве параметра GET, а затем кодирую его в XML и отправляю на сервер.

Что-то вродеstr = str.replace('&ldash;', '')? Florian Margaine
Это очень странно. Можете ли вы опубликовать некоторый код, чтобы мы могли видеть, как символы могут появляться в первую очередь? Nadh

Ваш Ответ

4   ответа
2

ведущих себя так, и вы можете использовать их в html позже. Более общим способом решения этой проблемы может быть замена всех «расширенных символов»; с их HTML-кодированным эквивалентом. Вы можете сделать это так:

[yourstring].replace(/[\u0080-\uC350]/g, 
                      function(a) {
                        return '&#'+a.charCodeAt(0)+';';
                      }
);
32

text = text.replace(/\u2013|\u2014/g, "-");

Заменяетall – (& # x2013;) и— (& # x2014;) символы с простыми черточками (-).

DEMO: http://jsfiddle.net/F953H/

Отлично - это сработало. Спасибо! cd6
проще:/\u2013|\u2014/g ;-)
3

Эм Дэш, Вы можете заменить его так:

str.replace('\u2014', '');​​​​​​​​​​

Вот пример Fiddle:http://jsfiddle.net/x67Ph/

\u2014 называетсяescape-последовательность Юникода, Это позволяет указать символ юникода по его коду. 2014 случается с Em Dash.

1

http://en.wikipedia.org/wiki/Dash

Вы можете заменить символы Unicode напрямую, используя escape-код Unicode:

'—my string'.replace( /[\u2012\u2013\u2014\u2015]/g, '' )
Этот код заменит только первое вхождение. Чтобы заменить все вхождения, вам нужно регулярное выражение с глобальным флагом:/regex/g
Любая конкретная причина, по которой вы не использовали диапазоны, т.е./[\u2012-\u2015]/g? Есть ли проблема совместимости с некоторыми браузерами?
Дали этот шанс, но безрезультатно - & # x2014; все еще прошел, и javascript не уловил его. cd6
Просто обновил мой код, чтобы использовать полное регулярное выражение. Попробуйте сейчас.

Похожие вопросы