【问题标题】:How to remove the blank lines in a textarea with JavaScript? [closed]如何使用 JavaScript 删除文本区域中的空白行? [关闭]
【发布时间】:2016-04-25 20:33:27
【问题描述】:

我通过以下方式获取文本区域的内容:

var stringArray = document.getElementById('textarea').value;

我必须删除所有空行(即使是带有空格的空行)。有什么有效的方法来做到这一点?

编辑:我想删除空白行,而不是空格。

例如

A
  B

C

D

A
  B
C
D

【问题讨论】:

  • 您有什么尝试,还是只是要求我们为您编写代码?
  • 您不必编写代码来帮助我。如果您不想帮忙找其他事情做。
  • 至少与@skobaljic 提到的东西实际上不是重复的
  • @Juhana:看看关于我的部分:stackoverflow.com/company/about“StackOverflow 是程序员学习、分享知识和发展事业的最大在线社区”。它说的是程序员,而不是专业的程序员。这也包括初学者和业余爱好者。太糟糕了,就像维基百科一样,这个网站变成了一个精英论坛。

标签: javascript


【解决方案1】:

最后我设法让它工作了。这是代码,以防其他人需要它:

function delBlankLines() {
 var stringArray = document.getElementById('textarea').value.split('\n');
 var temp = [""];
 var x = 0;

 for (var i = 0; i < stringArray.length; i++) {
   if (stringArray[i].trim() != "") {
     temp[x] = stringArray[i];
     x++;
   }
 }

 temp = temp.join('\n');
 document.myform.textarea.value = temp;
}

因此,textarea 内容被拆分为一个字符串数组,该数组被循环并检查修剪的当前行是否为空白;如果不是,则将该行复制到一个临时字符串数组(基本上空白行被忽略)。最后,我用临时字符串数组更新了 textarea。

【讨论】:

    【解决方案2】:

    您可以使用原生 JavaScript 修剪方法(可用于字符串原型):textareaValue.trim()

    琐事:window.textarea 自动设置为document.getElementById('textarea')。因此,您只需执行textarea 即可访问它。因此,要访问 textarea 的文本内容,您可以使用:textarea.innerHTMLconst textAreaValue = textarea.value

    接下来,运行textAreaValue.trim(); 这将消除任何外部空白。 " \n\n textArea \n\n\t\n " 将变成 "textArea"

    好的,现在我们可以在新行上拆分:const stringArray = textAreaValue.split('\n')。因为\n 是回车又名换行符。

    接下来,我们将要跳过除了空格之外什么都没有的行,我们可能可以通过几种方式找到这些行,但为了最安全,\S 应该可以工作。要测试不同的正则表达式,我推荐:regex101.com。

    对于更现代的版本:

    textarea.value = `
      
        the
          quick
       brown
       fox
        jumped
          over the lazy
      dog.
      
      `;
    
    /*
    function oldSolution() {
      var cleanedString = '';
      console.log(textarea.value);
      var stringArray = textarea.value.trim().split('\n'); 
      for(var i = 0; i < stringArray.length; i++){
        var line = stringArray[i];
        if(line.match('/\S/') !== -1){
          cleanedString += line.trim();
        }
      }
      console.log(cleanedString);
      output.innerText = cleanedString;
      return cleanedString;
    }
    */
    const cleanText = () => {
      const stringArray = textarea.value
        .trim()
        .split('\n')
        .filter(line => /\S/.test(line));
      console.log({stringArray})
      const cleanedString = stringArray.map(line => line.trim()).join(' ');
      console.log(cleanedString);
      output.innerText = cleanedString;
      return cleanedString;
    }
    <textarea rows='5' cols='50' id='textarea'></textarea>
    <input type='button' value='Extract Text' onclick='cleanText()'/>
    <div id="output"></div>

    【讨论】:

    • 给减分的人冷静一下
    • Trim 删除字符串两边的空格。但我想保留带有文本的行上的空格并在空行上删除它。我尝试了 splice() 方法,但由于某种原因它不起作用...
    • 只是说:我没有给你投反对票。
    • 感谢我仍在工作,但现在快完成了
    • 感谢 Zargold 的努力。我曾考虑过使用正则表达式,但要做到这一点实在是太糟糕了。
    猜你喜欢
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    相关资源
    最近更新 更多