[javascript] 문자열에서 모든 줄 바꿈을 제거하는 방법

텍스트 영역에 텍스트가 있고 .value 속성을 사용하여 읽습니다.

이제 Enter정규식으로 .replace를 사용하여 텍스트에서 모든 줄 바꿈 (누를 때 생성되는 문자)을 제거하고 싶습니다 .하지만 정규식에서 줄 바꿈을 어떻게 표시합니까?

그렇게 할 수 없다면 다른 방법이 있습니까?



답변

이것은 아마도 FAQ 일 것입니다. 어쨌든 줄 바꿈 (더 나은 줄 바꿈)은 캐리지 리턴 ( \r이전 Mac의 경우 CR, ), 줄 바꿈 ( \nLinux의 경우 \r\nUnics의 경우 LF , ) 또는 CR 다음에 LF ( , WinDOS의 경우) 중 하나 일 수 있습니다. (다른 답변과 달리 이것은 문자 인코딩과 관련없습니다 .)

따라서 RegExp모든 변형과 일치 하는 가장 효율적인 리터럴은

/\r?\n|\r/

문자열의 모든 줄 바꿈을 일치 시키려면 전역 일치를 사용하십시오.

/\r?\n|\r/g

각기. 그런 다음 replace몇 가지 다른 답변에서 제안한대로 방법을 진행하십시오 . (줄 바꿈 문자를 제거 하지 않고 공백 문자와 같은 다른 공백 문자로 바꾸면 단어가 그대로 유지됩니다.)


답변

줄 바꿈을 찾는 방법은 운영 체제 인코딩에 따라 다릅니다. Windows는 \r\n그랬지만 Linux는 사용 \n하고 Apple은 사용합니다 \r.

JavaScript 줄 바꿈 에서 이것을 발견했습니다 .

someText = someText.replace(/(\r\n|\n|\r)/gm, "");

모든 종류의 줄 바꿈을 제거해야합니다.


답변

var str = " \n this is a string \n \n \n"

console.log(str);
console.log(str.trim());

String.trim() 줄 바꿈을 포함하여 문자열의 시작과 끝에서 공백을 제거합니다.

const myString = "   \n \n\n Hey! \n I'm a string!!!         \n\n";
const trimmedString = myString.trim();

console.log(trimmedString);
// outputs: "Hey! \n I'm a string!!!"

다음은 바이올린 예제입니다 : http://jsfiddle.net/BLs8u/

노트! 문자열 중간의 줄 바꿈이나 공백이 아닌 문자열의 시작과 끝만 자릅니다.


답변

\n바꿈 및 \r캐리지 리턴을 위해 정규 표현식에서 사용할 수 있습니다 .

var str2 = str.replace(/\n|\r/g, "");

다른 운영 체제는 다양한 혼합물로, 다른 라인 엔딩을 사용 \n하고 \r. 이 정규식은 모두를 대체합니다.


답변

CR 및 LF를 포함한 모든 제어 문자를 제거하려면 다음을 사용할 수 있습니다.

myString.replace(/[^\x20-\x7E]/gmi, "")

인쇄 할 수없는 모든 문자를 제거합니다. 이것은 모두 ASCII HEX 공간 내에 있지 않은 문자 0x20-0x7E입니다. 필요에 따라 HEX 범위를 자유롭게 수정하십시오.


답변

가장 간단한 해결책은 다음과 같습니다.

let str = '\t\n\r this  \n \t   \r  is \r a   \n test \t  \r \n';
str.replace(/\s+/g, ' ').trim();
console.log(str); // logs: "this is a test"

.replace()/\s+/g정규 표현식이 변화하고 모든 그룹 전체 문자열에서 하나의 공간으로 화이트 스페이스 문자를 우리는 .trim()결과는 이전과 텍스트 후 모든 초과 화이트 스페이스를 제거합니다.

공백 문자로 간주됩니다 :
[ \f\n\r\t\v​\u00a0\u1680​\u2000​-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]


답변

var str = "bar\r\nbaz\nfoo";

str.replace(/[\r\n]/g, '');

>> "barbazfoo"