我使用的是jquery,而且我有一个textarea,所以当我提交按钮时,我会用换行符分隔每个文本。如何从换行符拆分?
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)
答案 0 :(得分:64)
尝试初始化提交功能中的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);
答案 1 :(得分:38)
应该是
yadayada.val.split(/\n/)
您将文字字符串传递给split命令,而不是正则表达式。
答案 2 :(得分:28)
由于您使用的是textarea
,因此您可以找到换行符的\ n或\ r \ n(或\ r \ n \ n)。因此,建议如下:
$('#keywords').val().split(/\r|\n/)
答案 3 :(得分:25)
无论平台(操作系统),您都应该解析换行符 这种具有正则表达式的分割是通用的,您可以考虑使用它。
var ks = $('#keywords').val().split(/\r?\n/);
E.g。
"a\nb\r\nc\r\nlala".split(/\r?\n/) // ["a", "b", "c", "lala"]
答案 4 :(得分:6)
只需
2*sizeof(int)
将完美运作。
请确保var ks = $('#keywords').val().split(/\r\n|\n|\r/);
位于 RegExp 字符串的前面,因为它将首先尝试。
答案 5 :(得分:3)
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);
答案 6 :(得分:1)
最简单,最安全的使用换行符来分割字符串的方法,而不考虑格式(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"));
}
答案 7 :(得分:0)
问题是,当您初始化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);
答案 8 :(得分:0)
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]);
答案 9 :(得分:0)
以下是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);
});
您可以尝试here
答案 10 :(得分:0)
您不需要在那里传递任何正则表达式。这很好。.
(function($) {
$(document).ready(function() {
$('#data').click(function(e) {
e.preventDefault();
$.each($("#keywords").val().split("\n"), function(e, element) {
alert(element);
});
});
});
})(jQuery);
答案 11 :(得分:0)
在 React Native 中,我通过双反斜杠完成了换行符的拆分,第一个是作为转义符:
3
答案 12 :(得分:-1)
(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">