【发布时间】:2011-09-16 16:51:49
【问题描述】:
我正在尝试使用 JavaScript 删除换行符。它适用于除 Internet Explorer 之外的所有浏览器(在 ie7、ie8 中测试)。我已经阅读了很多帖子,但找不到解决问题的方法。
Var someText = "Here’s your text.\n It has line breaks that need to be removed.\rUsing Javascript.\r\n";
someText = someText.replace(/(\r\n|\n|\r)/gm,"");
我还能尝试什么?
* 已编辑 *****
这里有更多代码和对我的问题的更好解释:
function checkLength(fn) {
var fn = document.getElementById(fn);
var fnb = fn.value;
var fnb = fnb.replace(/(\r\n|\n|\r)/gm,"");
var len = fnb.length;
...
我要做的是计算文本区域中的字符数。我不得不同时使用 Javascript 和 PHP 进行计算,并且由于换行符,PHP 和 Javascript 从来没有达到相同的数字。删除换行符时,除了在 Internet Explorer 中(当我使用 Javascript 计算时)外,一切都很好。 fnb.replace 不会更改 Internet Explorer 中的任何字符数,这就是为什么我确信它不会正确删除换行符的原因。在所有其他浏览器中都很好,我可以在删除 javascript 中的换行符后看到计数器的差异。只有在 ie 中它不会改变任何事情。我已经尝试了一些事情以及您在下面的建议,并且在删除换行符之前和之后的字符数在 ie 中是相同的。
/////////我的回答////////////////////////////// /
function checkLength(fn) {
var fn = document.getElementById(fn);
var fnb = fn.value;
var fnb = fnb.replace(/(\r\n|\n|\r)/gm,"");
var len = fnb.length;
...
就像 Tomalak 所说,我的逻辑可以改进 - 很抱歉对 JavaScript 和编程不熟悉。也许托马拉克不会犯任何错误,但我相信其他人都会犯错。我们必须犯错误才能学习。
Internet Explorer 不喜欢
var fn = document.getElementById(fn);
var fnb = fn.value;
我不得不把它改成:
var fnb = document.getElementById(fn).value;
即使它不合逻辑,它也应该有效。它确实适用于除 ie 之外的所有浏览器。这是一个错误。
这就是我一直在寻找的答案。
【问题讨论】:
-
您过于专注于尝试找到完全不同的东西来“尝试”,而不是试图找出您当前的代码导致错误的原因(我只能假设您是得到一个错误,因为你还没有真正告诉我们发生了什么是)。事实上,除了我在回答中讨论的
Var的问题之外,the code is fine 所以你需要查看你在代码的其他领域已经拥有的东西,并找出你做错了什么。跨度> -
这不是您要问的问题,但这个正则表达式更简单:
/\r|\n/gm。 -
@Toamalak :我更新了我的帖子,您现在有了更多详细信息。对不起,我不是职业选手。我希望我能成为,但我必须从某个地方开始。
-
@Mathiew:您不必成为 Javascript 的“专业人士”就可以从逻辑上思考问题。这是一般的生活技能。 :) 而且我无法真正解析该编辑;这对我来说只是一堵巨大的文字墙。我认为当你有一个测试用例和一个特定的问题以及一段特定的、缩小的代码时,你将不得不回来。