자바 스크립트에서 문자열의 줄 수를 계산하는 방법
문자열의 줄 수를 세고 싶습니다.
이 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++;
http://jsperf.com/counting-newlines/2
세 가지 옵션이 있습니다.
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;
다음은 작동하는 샘플 바이올린입니다.
추가 \ r \ n 및 "|"만 제거하십시오. 귀하의 정규직에서.
Better solution, as str.split("\n") function creates new array of strings split by "\n" which is heavier than str.match(/\n\g). str.match(/\n\g) creates array of matching elements only. Which is "\n" in our case.
var totalLines = (str.match(/\n/g) || '').length + 1;
<script type="text/javascript">
var multilinestr = `
line 1
line 2
line 3
line 4
line 5
line 6`;
totallines = multilinestr.split("\n");
lines = str.split("\n");
console.log(lines.length);
</script>
thats works in my case
'developer tip' 카테고리의 다른 글
엔티티를 읽기 전용으로 만드는 방법은 무엇입니까? (0) | 2020.11.13 |
---|---|
Android x86 화면 해상도 전환 (0) | 2020.11.13 |
자바 스크립트를 사용한 세션 전용 쿠키 (0) | 2020.11.13 |
INNER JOIN과 LEFT SEMI JOIN의 차이점 (0) | 2020.11.13 |
nginx / 승객의 "신청서에서받은 불완전한 응답" (0) | 2020.11.13 |