从输入中删除重复的空格

时间:2018-06-19 03:52:42

标签: javascript html math

<textarea id="check" cols="50" rows="20"></textarea>

<script>
var text = document.getElementById("check").value;
var lengthA = text;

    for (var i = 0; i < lengthA.length; i++) {
var space = " ";
if (lengthA[i] === space) {
    var next = lengthA[i] + 1;
    if (next === space) {
        lengthA.replace(lengthA[i], "");
       }
      }
     }

var length3 = lengthA.length - length2;
var words = length3 + 1;
</script>

好吧,我有一个问题!我试图通过法律使一个词反驳每个空间等于一个词(1:1)。我不确定它为什么不起作用,在我看来这对我来说是有道理的。我尝试了几种替代方案,并试图修复这个块。提前感谢任何回答的人,即使它不起作用! :)

编辑:正则表达式完成了这一操作并替换了错误使用的for loop和if语句。感谢

3 个答案:

答案 0 :(得分:1)

如下所示 -

var text = document.getElementById("check").value.replace (/ +/g, " ");

不确定,为什么你需要一个for循环开始。

/ + /将超过1个空格 g将在整个文本中进行所有更改

答案 1 :(得分:1)

要删除重复的空格,请使用以下代码

lengthA.replace(lengthA[i], "");

应该是

lengthA = lengthA.substring(0, i) + lengthA.substring(i + 1);
// i should not increase
i--;
continue;

你误解了替换的用法。

答案 2 :(得分:1)

使用JavaScript的str.replace()执行此操作。这不仅会删除空格,还会删除制表符,换行符等。

<强>用法:

var string = string.replace(/\s\s+/g, ' ');

因此请更改以下代码:

var lengthA = text;

    for (var i = 0; i < lengthA.length; i++) {
var space = " ";
if (lengthA[i] === space) {
    var next = lengthA[i] + 1;
    if (next === space) {
        lengthA.replace(lengthA[i], "");
       }
      }
     }

对此:

var lengthA = text.replace(/\s\s+/g, ' ');

参考此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace