在JavaScript中从字符串中删除长短划线?

时间:2012-05-03 17:34:57

标签: javascript character-encoding

我在网络应用中遇到错误,我不确定如何解决。

文本框向我发送长划线作为其内容的一部分(您知道,MS Word有时会自动插入的特殊长划线)。但是,我找不到替代它的方法;因为如果我尝试复制该字符并将其放入JavaScript str.replace语句中,则它不会正确呈现并且会破坏脚本。

我该如何解决这个问题?

杀死它的特定角色是 - 。

此外,如果它有帮助,我将该值作为GET参数传递,然后将其编码为XML并将其发送到服务器。

4 个答案:

答案 0 :(得分:33)

此代码可能有所帮助:

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

它用简单的短划线( - )替换所有 –( - )和—( - )符号。

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

答案 1 :(得分:3)

该字符称为Em Dash。您可以像这样替换它:

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

以下是一个示例小提琴:http://jsfiddle.net/x67Ph/

\u2014被称为unicode escape sequence。这些允许通过其代码指定unicode字符。 2014恰好是Em Dash。

答案 2 :(得分:2)

您需要担心三个unicode long-dash破折号:http://en.wikipedia.org/wiki/Dash

您可以使用unicode escape直接替换unicode字符:

'—my string'.replace( /[\u2012\u2013\u2014\u2015]/g, '' )

答案 3 :(得分:2)

可能会有更多字符表现得像这样,您可能希望稍后在html中重复使用它们。处理它的更通用的方法可能是用它们的html编码等效替换所有“扩展字符”。你可以这样做:

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