代码之家  ›  专栏  ›  技术社区  ›  Sean

从输入中删除重复空格

  •  1
  • Sean  · 技术社区  · 6 年前
    <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 回复  |  直到 6 年前
        1
  •  1
  •   Sudipta Mondal    6 年前

    就在下面怎么样-

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

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

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

        2
  •  1
  •   Terry Wei    6 年前

    要删除重复的空格,请执行以下代码

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

    应该是

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

    你误解了替换的用法。

        3
  •  1
  •   Vikasdeep Singh    6 年前

    使用 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