我在网络应用中遇到错误,我不确定如何解决。
文本框向我发送长划线作为其内容的一部分(您知道,MS Word有时会自动插入的特殊长划线)。但是,我找不到替代它的方法;因为如果我尝试复制该字符并将其放入JavaScript str.replace语句中,则它不会正确呈现并且会破坏脚本。
我该如何解决这个问题?
杀死它的特定角色是 - 。
此外,如果它有帮助,我将该值作为GET参数传递,然后将其编码为XML并将其发送到服务器。
答案 0 :(得分:33)
此代码可能有所帮助:
text = text.replace(/\u2013|\u2014/g, "-");
它用简单的短划线( - )替换所有 –
( - )和—
( - )符号。
答案 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)+';';
}
);