web-dev-qa-db-ja.com

文字列からすべての改行を削除する方法

テキストエリアにテキストがあり、.value属性を使用して読み上げます。

今、私はすべての改行(あなたが押すと生成される文字)を削除したいと思います。 Enterテキストから.replaceを正規表現で使用していますが、正規表現で改行を指定するにはどうすればよいですか。

それが不可能な場合は、別の方法はありますか?

343
Wingblade

これはおそらくFAQです。とにかく、改行(より良い:改行)は、Carriage Return(CR、古いMacでは\r)、Line Feed(Linuxを含むUnicesでは\n)、またはCRに続くLFのいずれかです。 WinDOSでは\r\n。 (別の答えとは反対に、これは文字エンコーディングに関係するnothingを持っています。)

したがって、すべてのバリアントに一致する最も効率的なRegExpリテラルは、

/\r?\n|\r/

文字列中のすべての改行にマッチさせたい場合は、グローバルマッチを使います。

/\r?\n|\r/g

それぞれ。それから他のいくつかの答えで提案されているようにreplaceメソッドを進めます。 (おそらく、{notは改行を削除したいのですが、スペース文字などの他の空白に置き換えて、単語がそのまま残るようにします。)

391
PointedEars

改行を見つける方法は、オペレーティングシステムのエンコーディングによって異なります。 Windowsは\r\nになりますが、Linuxは\nを使い、Appleは\rを使います。

私はこれを JavaScriptの改行で見つけました

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

それはあらゆる種類の改行を削除するはずです。

412
Eremite

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/ /

メモ! 文字列の先頭と末尾のみを削除します。文字列の途中の改行や空白は削除しません。

91
RobW

改行には\nを、改行には\rを使用できます。

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

\n\rのさまざまな組み合わせで、さまざまなオペレーティングシステムがさまざまな行末を使用します。この正規表現はそれらすべてを置き換えます。

35
Kendall Frey

CRとLFを含むすべての制御文字を削除したい場合は、これを使用できます。

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

印刷できない文字はすべて削除されます。 これは、ASCII HEXスペース0x20-0x7E内の all文字 _ not _ です。必要に応じて自由にHEX範囲を変更してください。

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

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

>> "barbazfoo"
14
Gordon Freeman

最も簡単な解決策は、

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"

/\s+/g regexpを指定した.replace()は、文字列全体で all groups の空白文字を1つの空白に変更してから、結果の.trim()を使用して、テキストの前後にあるすべての空白を削除します。

空白文字と見なされます。
[ \f\n\r\t\v​\u00a0\u1680​\u2000​-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]

14
Freezystem

改行文字を削除するにはこれを使います。

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

その後、文字列をトリミングして前後のスペースを削除できます。

yourString.trim()
13
Si7ius

PointedEarsが提供する答えは、私たちのほとんどは必要なものがすべてです。しかし、マティアスBynensの答えに従うことによって、私は、ウィキペディアの旅行に行って、これを見つけた: https://en.wikipedia.org/wiki/Newline

以下は、上記のWikiページは、この回答の時点で「改行」を考えて、すべてを実装して、ドロップイン機能です。

何かがあなたのケースに適合しない場合は、それを削除します。また、パフォーマンスを探しているなら、これはそれではないかもしれませんが、いずれにしても仕事をしていません迅速なツールのために、これは有用です。

// 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`)
});
5
futz.co

正規表現の改行は\ nなので、あなたのスクリプトは

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

私は答えを追加しています、それは上記の単なるアドオンです、私はすべての/ nオプションを試しましたが機能しませんでした、テキストがサーバーからダブルスラッシュで来ているのを見て、これを使用しました:

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

次のコードを試してください。それはすべてのプラットフォームで動作します。

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'