Como remover todas as quebras de linha de uma string?

Eu tenho um texto em uma área de texto e eu o leio usando o atributo .value. Agora eu gostaria de remover todas as quebras de linha (o caractere que é produzido quando você pressiona enter) do meu texto agora usando .replace com uma expressão regular, mas como eu indico um linebreak em um regex? Se isso não for possível, existe alguma outra maneira?

Este é provavelmente um FAQ. De qualquer forma, as quebras de linha (melhor: novas linhas) podem ser de retorno de carro (CR, \r em Macs antigos), alimentação de linha (LF, \n , em Unices incl. Linux) ou CR seguido por LF ( \r\n , no WinDOS). (Ao contrário de outra resposta, isso não tem nada a ver com a codificação de caracteres.)

Portanto, o literal RegExp mais eficiente para corresponder a todas as variantes é

 /\r?\n|\r/ 

Se você quiser corresponder todas as novas linhas em uma string, use uma correspondência global,

 /\r?\n|\r/g 

respectivamente. Em seguida, prossiga com o método de replace , conforme sugerido em várias outras respostas. (Provavelmente você não deseja remover as novas linhas, mas substituí-las por outro espaço em branco, por exemplo, o caractere de espaço, para que as palavras permaneçam intactas.)

Como você encontraria uma quebra de linha varia entre as codificações do sistema operacional. O Windows seria \r\n\t mas o Linux apenas usa \n e a Apple usa \r .

Eu encontrei isso em quebras de linha javascript

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

Isso deve remover todos os tipos de quebras de linha.

String.trim() remove os espaços em branco do começo e do fim das strings … incluindo as novas linhas.

 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!!!" 

Aqui está um exemplo de violino: http://jsfiddle.net/BLs8u/

NOTA! ele apenas apara o início e o fim da string, não quebra de linha ou espaço em branco no meio da string.

Você pode usar \n em um regex para newlines e \r para retornos de carro.

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

Diferentes sistemas operacionais usam diferentes terminações de linha, com diferentes combinações de \n e \r . Este regex replaceá todos eles.

Se você quiser remover todos os caracteres de controle, incluindo CR e LF, você pode usar isto:

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

Ele removerá todos os caracteres não imprimíveis. Todos esses caracteres NÃO estão no espaço ASCII HEX 0x20-0x7E . Sinta-se à vontade para modificar o intervalo HEX conforme necessário.

 var str = "bar\r\nbaz\nfoo"; str.replace(/[\r\n]/g, ''); >> "barbazfoo" 

Para remover novos caracteres de linha, use:

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

Então você pode aparar sua string para remover espaços iniciais e finais:

 yourString.trim() 

A solução mais simples seria:

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

.replace() com /\s+/g regexp está mudando todos os grupos de espaços em branco para um único espaço em toda a string e então nós .trim() o resultado para remover todos os espaços em branco antes e depois do texto.

São considerados como espaços em branco:
[ \f\n\r\t\v​\u00a0\u1680​\u2000​-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]

Um linebreak na regex é \ n, então seu script seria

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

A resposta fornecida pela PointedEars é tudo que a maioria de nós precisa. Mas seguindo a resposta de Mathias Bynens, eu fui em uma viagem da Wikipedia e encontrei isto: https://en.wikipedia.org/wiki/Newline .

A seguir está uma function drop-in que implementa tudo o que a página Wiki acima considera “nova linha” no momento desta resposta.

Se algo não se encheckbox no seu caso, apenas remova-o. Além disso, se você está procurando por desempenho, pode não ser, mas para uma ferramenta rápida que faz o trabalho em qualquer caso, isso deve ser útil.

 // 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`) }); 

Experimente este código, funciona em todas as plataformas:

 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' 

Outro truque, se você quiser obter números, é usar parseFloat() ou parseInt() e ele retornará um bom número