문자열의 줄 수를 세고 싶습니다.
이 stackoverflow 답변을 사용하려고했습니다.
lines = str.split("\r\n|\r|\n");
return lines.length;
이 문자열 (원래 버퍼 였음) :
GET / HTTP/1.1
Host: localhost:8888
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.2 (KHTML,like Gecko) Chrome/15.0.874.121 Safari/535.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
그리고 어떤 이유로 나는 lines = ‘1’을 얻었습니다.
작동시키는 방법을 아십니까?
답변
정규식을 사용하면 다음과 같이 줄 수를 계산할 수 있습니다.
str.split(/\r\n|\r|\n/).length
또는 아래와 같이 분할 방법을 시도 할 수 있습니다.
var lines = $("#ptest").val().split("\n");
alert(lines.length);
작업 솔루션 : http://jsfiddle.net/C8CaX/
답변
분할보다 더 짧고 성능이 더 좋은 또 다른 솔루션은 다음과 같습니다.
const lines = (str.match(/\n/g) || '').length + 1
답변
정규식을 사용하여 분할하려면 /.../
lines = str.split(/\r\n|\r|\n/);
답변
흠 예 … 당신이하는 일은 완전히 잘못되었습니다. 당신이 말하면 str.split("\r\n|\r|\n")
정확한 문자열을 찾으려고 할 것 "\r\n|\r|\n"
입니다. 그것이 당신이 틀린 곳입니다. 전체 문자열에는 그러한 발생이 없습니다. 정말로 원하는 것은 David Hedlund가 제안한 것입니다.
lines = str.split(/\r\n|\r|\n/);
return lines.length;
그 이유는 split 메소드가 JavaScript에서 문자열을 정규 표현식으로 변환하지 않기 때문입니다. 정규식을 사용하려면 정규식을 사용하십시오.
답변
나는 split과 정규식, 문자열을 비교하고 for 루프로 수행하는 성능 테스트를 수행했습니다.
for 루프가 가장 빠른 것 같습니다.
참고 :이 코드 ‘있는 그대로’는 Windows 나 macOS endline에 유용하지 않지만 성능을 비교하는 데는 괜찮습니다.
문자열로 분할 :
split('\n').length;
정규식으로 분할 :
split(/\n/).length;
다음을 사용하여 분할 :
var length = 0;
for(var i = 0; i < sixteen.length; ++i)
if(sixteen[i] == s)
length++;
답변
세 가지 옵션이 있습니다.
jQuery 사용 ( jQuery 웹 사이트 에서 다운로드 )-jquery.com
var lines = $("#ptest").val().split("\n");
return lines.length;
Regex 사용
var lines = str.split(/\r\n|\r|\n/);
return lines.length;
또는 for each 루프의 재현
var length = 0;
for(var i = 0; i < str.length; ++i){
if(str[i] == '\n') {
length++;
}
}
return length;