자바 스크립트 줄 바꿈 분할 방법
나는 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)
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);
그것은해야한다
yadayada.val.split(/\n/)
정규식이 아닌 분할 명령에 리터럴 문자열을 전달하고 있습니다.
플랫폼 (운영 체제)에 관계없이 줄 바꿈을 구문 분석해야합니다. 정규식을 사용한이 분할은 보편적이므로 사용을 고려할 수 있습니다.
var ks = $('#keywords').val().split(/\r?\n/);
예
"a\nb\r\nc\r\nlala".split(/\r?\n/) // ["a", "b", "c", "lala"]
을 사용하고 있으므로 textarea
줄 바꿈에 대해 \ n 또는 \ r (또는 \ r \ n)을 찾을 수 있습니다. 따라서 다음이 제안됩니다.
$('#keywords').val().split(/\r|\n/)
ref : 문자열에 줄 바꿈이 있는지 확인
다만
var ks = $('#keywords').val().split(/\r\n|\n|\r/);
완벽하게 작동합니다.
확인 \r\n
하여의 선두에 위치 정규식 문자열, 처음 시도됩니다 발생합니다.
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);
간단하고 안전한 방법은 형식에 관계없이 (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"));
}
문제는 당신이 초기화 할 때이다 ks
는이 value
설정되지 않았습니다.
You need to fetch the value when user submits the form. So you need to initialize the ks
inside the callback function
(function($){
$(document).ready(function(){
$('#data').submit(function(e){
//Here it will fetch the value of #keywords
var ks = $('#keywords').val().split("\n");
...
});
});
})(jQuery);
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]);
Here is example with console.log
instead of alert()
. It is more convenient :)
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);
});
You can try it here
(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">
참고URL : https://stackoverflow.com/questions/8125709/javascript-how-to-split-newline
'programing' 카테고리의 다른 글
컨텍스트 루트 이름을 포함하지 않고 상대 경로를 사용하는 방법은 무엇입니까? (0) | 2020.10.18 |
---|---|
전체 텍스트 인덱싱이 아니므로 테이블 또는 인덱싱 된 뷰에서 CONTAINS 또는 FREETEXT 조건자를 사용할 수 없습니다. (0) | 2020.10.18 |
JQuery-값에 따라 드롭 다운 항목을 선택하는 방법 (0) | 2020.10.18 |
vim에서 현재 파일을 어떻게 삭제할 수 있습니까? (0) | 2020.10.18 |
HTML5 Canvas DrawImage : 안티 앨리어싱을 적용하는 방법 (0) | 2020.10.18 |