555

textareaにテキストがあり、.value属性を使用してテキストを読み取ります。

.replaceを正規表現で使用して、テキストからすべての改行(を押したときに生成される文字Enter)を削除したいのですが、正規表現で改行を示すにはどうすればよいですか?

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

4

20 に答える 20

649

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

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

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

これにより、あらゆる種類の改行が削除されます。

于 2012-05-29T19:10:47.083 に答える
594

改行(より良い:改行)は、キャリッジリターン(CR 、、\r古いMacの場合)、ラインフィード(LF 、、 \nLinuxを含むUnicesの場合)、またはCRの後にLF(\r\n、WinDOSの場合)のいずれかになります。(別の答えとは異なり、これは文字エンコードとは何の関係もありません。)

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

/\r?\n|\r/

文字列内のすべての改行を一致させる場合は、グローバル一致を使用します。

/\r?\n|\r/g

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

于 2012-05-29T19:18:29.860 に答える
149

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/

ノート!文字列の先頭と末尾のみをトリミングし、文字列の途中の改行や空白はトリミングしません。

于 2014-06-12T22:43:18.397 に答える
73

\n正規表現で改行と\rキャリッジリターンに使用できます。

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

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

于 2012-05-29T19:09:03.780 に答える
40

最も簡単な解決策は次のとおりです。

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

.replace()/\s+/g正規表現を使用すると、空白文字のすべてのグループが文字列全体で1つのスペースに変更され.trim()テキストの前後にある余分な空白がすべて削除されます。

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

于 2017-07-11T08:26:26.030 に答える
22

CRとLFを含むすべての制御文字を削除する場合は、次を使用できます。

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

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

于 2016-02-06T21:03:36.113 に答える
17
var str = "bar\r\nbaz\nfoo";

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

>> "barbazfoo"
于 2016-01-21T16:24:06.293 に答える
17

改行文字を削除するには、次を使用します。

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

次に、文字列をトリミングして、先頭と末尾のスペースを削除できます。

yourString.trim()
于 2017-10-06T10:21:13.493 に答える
16

これにより、改行が空のスペースに置き換えられます。

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

この記事の詳細をお読みください。

于 2020-09-10T05:48:49.610 に答える
11

以下のこの機能を使用して、あなたの生活を楽にしてください

最も簡単なアプローチは、正規表現を使用して文字列内の改行を検出して置換することです。この場合、replace関数と文字列を使用して置換します。この場合は空の文字列です。

function remove_linebreaks( var message ) {
    return message.replace( /[\r\n]+/gm, "" );
}

上記の式で、gとmはグローバルフラグとマルチラインフラグ用です

于 2019-12-16T16:18:35.197 に答える
9

PointedEarsが提供する答えは、私たちのほとんどが必要とするすべてです。しかし、Mathias Bynensの答えに従うことで、私はWikipediaの旅行に行き、これを見つけました: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`)
});
于 2017-06-08T14:24:16.647 に答える
8

簡単に使用して新しい行を削除できますtext.replace(/\n/g, " ")

const text = 'Students next year\n GO \n For Trip \n';
console.log("Original : ", text);

var removed_new_line = text.replace(/\n/g, " ");
console.log("New : ", removed_new_line);

于 2021-01-20T06:39:01.240 に答える
5

正規表現の改行は\nなので、スクリプトは次のようになります。

var test = 'this\nis\na\ntest\nwith\newlines';
console.log(test.replace(/\n/g, ' '));
于 2012-05-29T19:09:03.930 に答える
5

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

var fixedText = yourString.replace(/(\r\n|\n|\r|\\n)/gm, '');
于 2019-07-07T12:36:02.117 に答える
2

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

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'
于 2017-04-28T21:21:47.657 に答える
2

&nbspこのhtm文字のshileを使用する必要がない場合は、これstr.replace(/(\r\n|\n|\r)/gm, "")を使用できますstr.split('\n').join('');

乾杯

于 2020-09-10T05:59:52.903 に答える
2

私はよくこの正規表現をjsons内の(html)文字列に使用します:

replace(/[\n\r\t\s]+/g, ' ')

文字列は、CMSまたはi18nphpのhtmlエディターから取得されます。一般的なシナリオは次のとおりです。

- lorem(.,)\nipsum
- lorem(.,)\n ipsum
- lorem(.,)\n
  ipsum
- lorem   ipsum
- lorem\n\nipsum
- ... many others with mixed whitespaces (\t\s) and even \r

正規表現は、この醜いものを回避します。

lorem\nipsum    => loremipsum
lorem,\nipsum   => lorem,ipsum
lorem,\n\nipsum => lorem,  ipsum
...

確かにすべてのユースケースに対応しているわけではなく、最速のユースケースではありませんが、ほとんどのテキストエリアやWebサイトまたはWebアプリのテキストには十分です。

于 2021-12-05T11:04:29.200 に答える
1

1番目の方法:

const yourString = 'How are you \n I am fine \n Hah'; // Or textInput, something else

const newStringWithoutLineBreaks = yourString.replace(/(\r\n|\n|\r)/gm, "");

2番目の方法:

const yourString = 'How are you \n I am fine \n Hah'; // Or textInput, something else

const newStringWithoutLineBreaks = yourString.split('\n').join('');
于 2022-02-18T17:02:06.687 に答える
0

Macでは\n、正規表現で使用して改行を一致させます。したがって、コードはstring.replace(/\n/g, '')、psになります。gが続くということは、最初のコードだけでなく、すべてに一致することを意味します。

Windowsでは。になります\r\n

于 2020-03-07T09:31:20.903 に答える
-3

const text ='test \ nwith \ nline \ nbreaks'

const textWithoutBreaks = text.split('\ n')。join('')

于 2021-07-27T22:33:49.277 に答える