web-dev-qa-db-ja.com

textareas文字列値を改行で区切られたJavaScript配列に変換します

ユーザーがtextareaを使用しており、ユーザーは最大1000文字を書き込むことができます。 jQuery('#textarea').val()を取得して、各項目がtextareaの値の行である配列を作成する必要があります。つまり:

これは、textarea内の素敵な行です。
これは別の行です。
(この行が空であると仮定しましょう-無視する必要があります)。
誰かが上の2行以上を残しました。

JavaScript配列に変換する必要があります:

_var texts = [];
text[0] = 'This is a Nice line inside the textarea.';
text[1] = 'This is another line.';
text[2] = 'Someone left more than 2 new lines above.';
_

そうすれば、それらを簡単に imploded でクエリ文字列にすることができます(これはプロバイダーが必要とするqs形式です):

_example.com/process.php?q=["This is a Nice line inside the textarea.","This is another line.","Someone left more than 2 new lines above."]
_

phpjs explode()string.split("\n")の両方のアプローチを試しましたが、余分な改行(改行)は処理されません。何か案は?

25
Andres SK

String.prototype.split()は甘いです。

_var lines = $('#mytextarea').val().split(/\n/);
var texts = [];
for (var i=0; i < lines.length; i++) {
  // only Push this line if it contains a non whitespace character.
  if (/\S/.test(lines[i])) {
    texts.Push($.trim(lines[i]));
  }
}
_

_String.prototype.split_はすべてのプラットフォームでサポートされているわけではないので、jQueryは代わりに$.split()を提供することに注意してください。文字列の両端の空白を削除するだけです。

_$.trim(" asd  \n") // "asd"
_

ここで確認してください: http://jsfiddle.net/p9krF/1/

33
Alex Wayne

split関数を使用します。

var arrayOfLines = $("#input").val().split("\n");
5
Abdul Munim
var split = $('#textarea').val().split('\n');
var lines = [];
for (var i = 0; i < split.length; i++)
    if (split[i]) lines.Push(split[i]);
return lines;
3
Phil Klein

これを試して

var lines = [];
$.each($('textarea').val().split(/\n/), function(i, line){
   if(line && line.length){
      lines.Push(line);
   }
});
1
ShankarSangoli