Javascript, как разделить новую строку
Я использую jquery, и у меня есть текстовое поле, поэтому, когда я отправляю кнопку, я буду уведомлять каждый текст отдельно по новой строке. Как расколоться от новой строки?
var ks = $('#keywords').val().split("\n");
(function($){
$(document).ready(function(){
$('#data').submit(function(e){
e.preventDefault();
alert(ks[0]);
$.each(ks, function(k){
alert(k);
});
});
});
})(jQuery);
пример ввода:
Hello
There
Результат, который я хочу:
alert(Hello); and
alert(There)
Ответы
Ответ 1
Попробуйте инициализировать переменную ks
внутри вашей функции отправки.
(function($){
$(document).ready(function(){
$('#data').submit(function(e){
var ks = $('#keywords').val().split("\n");
e.preventDefault();
alert(ks[0]);
$.each(ks, function(k){
alert(k);
});
});
});
})(jQuery);
Ответ 2
Это должно быть
yadayada.val.split(/\n/)
вы передаете литеральную строку команде split, а не регулярному выражению.
Ответ 3
Вы должны разбирать строки новой строки независимо от платформы (операционной системы)
Этот раскол с регулярным выражением универсален, вы можете использовать его.
var ks = $('#keywords').val().split(/\r?\n/);
например.
"a\nb\r\nc\r\nlala".split(/\r?\n/) // ["a", "b", "c", "lala"]
Ответ 4
Поскольку вы используете textarea
, вы можете найти \n или\r (или\r\n) для разрывов строк. Итак, предлагается следующее:
$('#keywords').val().split(/\r|\n/)
ref: проверьте, содержит ли строка разрыв строки
Ответ 5
Просто
var ks = $('#keywords').val().split(/\r\n|\n|\r/);
будет работать отлично.
Убедитесь, что \r\n
находится в начале строки RegExp, потому что он будет пробоваться первым.
Ответ 6
- Переместите
var ks = $('#keywords').val().split("\n");
внутри обработчика событий
- Используйте
alert(ks[k])
вместо alert(k)
(function($){
$(document).ready(function(){
$('#data').submit(function(e){
e.preventDefault();
var ks = $('#keywords').val().split("\n");
alert(ks[0]);
$.each(ks, function(k){
alert(ks[k]);
});
});
});
})(jQuery);
Демо
Ответ 7
Самый простой и безопасный способ разбить строку, используя новые строки, независимо от формата (CRLF, LFCR или LF), это удалить все символы возврата каретки и , а затем разделить на символы новой строки. "text".replace(/\r/g, "").split(/\n/);
Это гарантирует, что при наличии непрерывных новых строк (т.е. \r\n\r\n
, \n\r\n\r
или \n\n
) результат всегда будет одинаковым.
В вашем случае код будет выглядеть так:
(function ($) {
$(document).ready(function () {
$('#data').submit(function (e) {
var ks = $('#keywords').val().replace(/\r/g, "").split(/\n/);
e.preventDefault();
alert(ks[0]);
$.each(ks, function (k) {
alert(k);
});
});
});
})(jQuery);
Вот несколько примеров, показывающих важность этого метода:
var examples = ["Foo\r\nBar", "Foo\r\n\r\nBar", "Foo\n\r\n\rBar", "Foo\nBar\nFooBar"];
examples.forEach(function(example) {
output('Example "${example}":');
output('Split using "\n": "${example.split("\n")}"');
output('Split using /\r?\n/: "${example.split(/\r?\n/)}"');
output('Split using /\r\n|\n|\r/: "${example.split(/\r\n|\n|\r/)}"');
output('Current method: ${example.replace(/\r/g, "").split("\n")}');
output("________");
});
function output(txt) {
console.log(txt.replace(/\n/g, "\\n").replace(/\r/g, "\\r"));
}
Ответ 8
Проблема заключается в том, что при инициализации ks
параметр value
не установлен.
Вы должны получить значение, когда пользователь отправляет форму. Поэтому вам нужно инициализировать ks
внутри функции обратного вызова
(function($){
$(document).ready(function(){
$('#data').submit(function(e){
//Here it will fetch the value of #keywords
var ks = $('#keywords').val().split("\n");
...
});
});
})(jQuery);
Ответ 9
Good'ol javascript:
var m = "Hello World";
var k = m.split(' '); // I have used space, you can use any thing.
for(i=0;i<k.length;i++)
alert(k[i]);
Ответ 10
Вот пример с console.log
вместо alert()
. Это удобнее:)
var parse = function(){
var str = $('textarea').val();
var results = str.split("\n");
$.each(results, function(index, element){
console.log(element);
});
};
$(function(){
$('button').on('click', parse);
});
Вы можете попробовать здесь
Ответ 11
(function($) {
$(document).ready(function() {
$('#data').click(function(e) {
e.preventDefault();
$.each($("#keywords").val().split("\n"), function(e, element) {
alert(element);
});
});
});
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="keywords">Hello
World</textarea>
<input id="data" type="button" value="submit">