노드에서 줄 바꿈('\n')으로 문자열을 분할하는 방법은 무엇입니까?
노드 내에서 새 줄('\n')을 사용하여 문자열을 분할하려면 어떻게 해야 합니까?var a = "test.js\nagain.js"
그리고 나는 해야만 합니다.["test.js", "again.js"]
.나는 노력했다.
a.split("\n");
a.split("\\n");
a.split("\r\n");
a.split("\r");
하지만 위의 것은 작동하지 않습니다.
정규식에서 분할해 보십시오./\r?\n/
Windows 및 UNIX 시스템에서 모두 사용할 수 있습니다.
> "a\nb\r\nc".split(/\r?\n/)
[ 'a', 'b', 'c' ]
파일이 시스템에 기본으로 제공되는 경우(확실히 보장되지 않음) Node에서 다음을 지원할 수 있습니다.
var os = require('os');
a.split(os.EOL);
이것은 일반적으로 플랫폼 이동성을 위해 노드에서 출력 문자열을 구성하는 데 더 유용합니다.
정규식처럼 보입니다./\r\n|\r|\n/
에서는 CR, LF 및 CRLF 줄 끝단의 혼합 시퀀스를 처리하고 중간에 빈 줄을 모두 유지합니다.해보세요!
function splitLines(t) { return t.split(/\r\n|\r|\n/); }
// single newlines
console.log(splitLines("AAA\rBBB\nCCC\r\nDDD"));
// double newlines
console.log(splitLines("EEE\r\rFFF\n\nGGG\r\n\r\nHHH"));
// mixed sequences
console.log(splitLines("III\n\r\nJJJ\r\r\nKKK\r\n\nLLL\r\n\rMMM"));
따라서 다음과 같은 어레이를 구축해야 합니다.
[ "AAA", "BBB", "CCC", "DDD" ]
[ "EEE", "", "FFF", "", "GGG", "", "HHH" ]
[ "III", "", "JJJ", "", "KKK", "", "LLL", "", "MMM" ]
또한 정규식에 다음을 추가하여 다른 정규 유니코드 줄 터미네이터를 인식하도록 가르칠 수 있습니다.|\xHH
또는|\uHHHH
부품, 위치H
는 추가 터미네이터 문자 코드 포인트의 16진수입니다(위키백과 문서에서 볼 수 있듯이).U+HHHH
).
a = a.split("\n");
참고:split
ting은 새 배열을 원래 문자열에 할당하는 대신 반환합니다.변수에 명시적으로 저장해야 합니다.
다음과 같이 두 개의 교체와 한 개의 분할을 사용하여 혼합 및 빈 줄 유지를 포함하여 가능한 모든 줄 끝에서 작동하는 솔루션을 달성할 수 있습니다.
text.replace(/\r\n/g, "\r").replace(/\n/g, "\r").split(/\r/);
그것을 테스트하기 위한 어떤 코드.
var CR = "\x0D"; // \r
var LF = "\x0A"; // \n
var mixedfile = "00" + CR + LF + // 1 x win
"01" + LF + // 1 x linux
"02" + CR + // 1 x old mac
"03" + CR + CR + // 2 x old mac
"05" + LF + LF + // 2 x linux
"07" + CR + LF + CR + LF + // 2 x win
"09";
function showarr (desc, arr)
{
console.log ("// ----- " + desc);
for (var ii in arr)
console.log (ii + ") [" + arr[ii] + "] (len = " + arr[ii].length + ")");
}
showarr ("using 2 replace + 1 split",
mixedfile.replace(/\r\n/g, "\r").replace(/\n/g, "\r").split(/\r/));
및 산출물
// ----- using 2 replace + 1 split
0) [00] (len = 2)
1) [01] (len = 2)
2) [02] (len = 2)
3) [03] (len = 2)
4) [] (len = 0)
5) [05] (len = 2)
6) [] (len = 0)
7) [07] (len = 2)
8) [] (len = 0)
9) [09] (len = 2)
첫 번째 방법은 작동해야 합니다.
> "a\nb".split("\n");
[ 'a', 'b' ]
> var a = "test.js\nagain.js"
undefined
> a.split("\n");
[ 'test.js', 'again.js' ]
나는 노드나 브라우저에서 줄말기 작업을 위한 모듈을 만들었습니다.다음과 같은 분할 방법이 있습니다.
var lines = eol.split(text)
언급URL : https://stackoverflow.com/questions/21895233/how-to-split-string-with-newline-n-in-node
'source' 카테고리의 다른 글
jQuery에서 $.proxy() 이해 (0) | 2023.08.10 |
---|---|
드라이버 클래스 oracle.jdbc를 로드하지 못했습니다.HikariConfig 클래스 로더 또는 스레드 컨텍스트의 OracleDriver (0) | 2023.08.10 |
ID의 순서를 유지하면서 하위 카테고리의 순위 지정 (0) | 2023.08.10 |
sqlAlchemy에서 인터페이스 테이블을 생성하는 방법(다대다 관계) (0) | 2023.08.10 |
데이터베이스에 json 개체를 추가하는 중 (0) | 2023.08.10 |