【问题标题】:Get text from the textarea从文本区域获取文本
【发布时间】:2018-01-29 01:41:45
【问题描述】:

如何创建一个函数,从 textarea 中提取文本并将其划分为单个单词并将所有单词放入一个数组中?

<body>

 <textarea name="text" id="" cols="30" rows="10" id="textarea"></textarea>
 <button id="button">Click</button>


 <script src="script.js"></script>
</body>

这就是我得到的:P 卡住了一段时间了。不知道该怎么办。请帮忙。

 var btn = document.getElementById("button");
 btn.addEventListener("click", getText);

 function getText(){

 }

</script>

【问题讨论】:

  • 你会如何定义一个“单词”“单词”有什么区别?一旦你可以定义它,你可以简单地使用document.querySelector('textarea').value.split(wordDelimeter)

标签: javascript


【解决方案1】:

你已经完成了 80% :-)

现在你需要从textarea中获取值,用这个正则表达式/\s+/替换空格(这只是为了替换连续的空格)然后用''分割文本(单个空格)

var btn = document.getElementById("button");
btn.addEventListener("click", getText);

var array;

function getText() {
  var textarea = document.getElementById('text');
  array = textarea.value.replace(/\s+/g, ' ').split(' ').filter((e) => e.length > 0);
  
  console.log(array);
}
<textarea name="text" id="text" cols="30" rows="10" id="textarea">Hello           World</textarea>
<button id="button">Click</button>

看到了吗?现在您将值放入数组中。

更新:根据@phil g 修饰符是必要的,以避免与第一个位置的新行不一致。

【讨论】:

  • 这不能很好地处理标点符号和换行符,但它在正确的轨道上
  • 您想将 global 标志添加到您的正则表达式,即/\s+/g。这至少会处理换行符
  • 感谢您的帮助!我只是想补充一个小问题。下面的行是做什么的?特别是 ((e) .filter((e) => e.length > 0);
  • @EirikVattøy 去阅读这个Array.prototype.filter() 它只是一个过滤那些满足特定谓词的元素的函数:-)
【解决方案2】:
function getText(){
   var text = document.getElementById("textarea").value;
   var words = text.split(/\s+/);
   return words;
}

value 从 textarea 获取文本,Split 使用空格将文本分解为单词。

【讨论】:

    猜你喜欢
    • 2013-08-02
    • 2011-09-26
    • 1970-01-01
    • 2013-02-03
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    相关资源
    最近更新 更多