Programming

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

procodes 2020. 2. 26. 22:46
반응형

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


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

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

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


이것은 아마도 FAQ 일 것입니다. 어쨌든 줄 바꿈 (더 나은 줄 바꿈)은 캐리지 리턴 (CR,, \r이전 Mac의 경우), 줄 바꿈 (LF,, \nLinux를 포함한 \r\nUnices의 경우) 또는 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, "");

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


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, "")

인쇄 할 수없는 모든 문자를 제거합니다. 이는 모든 문자 NOT 내에서 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"

줄 바꿈 문자를 제거하려면 다음을 사용하십시오.

yourString.replace(/\r?\n?/g, '')

그런 다음 문자열을 잘라서 앞뒤 공백을 제거 할 수 있습니다.

yourString.trim()

PointedEars가 제공하는 답변은 우리 모두에게 필요한 모든 것입니다. 그러나 Mathias Bynens의 답변에 따라 Wikipedia 여행을 갔고 https://en.wikipedia.org/wiki/Newline을 찾았습니다 .

다음은 위의 위키 페이지가이 답변 당시 "새 줄"로 간주하는 모든 것을 구현하는 드롭 인 기능입니다.

케이스에 맞지 않는 물건을 제거하면됩니다. 또한 성능을 찾고 있다면 이것이 아닐 수도 있지만 어떤 경우에도 작업을 수행하는 빠른 도구의 경우 유용합니다.

// replaces all "new line" characters contained in `someString` with the given `replacementString`
const replaceNewLineChars = ((someString, replacementString = ``) => { // defaults to just removing
  const LF = `\u{000a}`; // Line Feed (\n)
  const VT = `\u{000b}`; // Vertical Tab
  const FF = `\u{000c}`; // Form Feed
  const CR = `\u{000d}`; // Carriage Return (\r)
  const CRLF = `${CR}${LF}`; // (\r\n)
  const NEL = `\u{0085}`; // Next Line
  const LS = `\u{2028}`; // Line Separator
  const PS = `\u{2029}`; // Paragraph Separator
  const lineTerminators = [LF, VT, FF, CR, CRLF, NEL, LS, PS]; // all Unicode `lineTerminators`
  let finalString = someString.normalize(`NFD`); // better safe than sorry? Or is it?
  for (let lineTerminator of lineTerminators) {
    if (finalString.includes(lineTerminator)) { // check if the string contains the current `lineTerminator`
      let regex = new RegExp(lineTerminator.normalize(`NFD`), `gu`); // create the `regex` for the current `lineTerminator`
      finalString = finalString.replace(regex, replacementString); // perform the replacement
    };
  };
  return finalString.normalize(`NFC`); // return the `finalString` (without any Unicode `lineTerminators`)
});

정규 표현식의 줄 바꿈은 \ n이므로 스크립트는

var test = 'this\nis\na\ntest\nwith\newlines';
console.log(test.replace(/\n/g, ' '));

다음 코드를 시도하십시오. 모든 플랫폼에서 작동합니다.

var break_for_winDOS = 'test\r\nwith\r\nline\r\nbreaks';
var break_for_linux = 'test\nwith\nline\nbreaks';
var break_for_older_mac = 'test\rwith\rline\rbreaks';

break_for_winDOS.replace(/(\r?\n|\r)/gm, ' ');
//output
'test with line breaks'

break_for_linux.replace(/(\r?\n|\r)/gm, ' ');
//output
'test with line breaks'

break_for_older_mac.replace(/(\r?\n|\r)/gm, ' ');
// Output
'test with line breaks'

내 대답을 추가하고 있습니다. 위의 애드온입니다. 모든 / n 옵션을 시도했지만 작동하지 않았습니다. 텍스트가 이중 슬래시로 서버에서 나오는 것을 보았으므로 다음을 사용했습니다.

var fixedText = yourString.replace(/(\r\n|\n|\r|\\n)/gm, '');

참고 URL : https://stackoverflow.com/questions/10805125/how-to-remove-all-line-breaks-from-a-string



반응형