テキストエリアにテキストがあり、.value属性を使用して読み上げます。
今、私はすべての改行(あなたが押すと生成される文字)を削除したいと思います。 Enterテキストから.replaceを正規表現で使用していますが、正規表現で改行を指定するにはどうすればよいですか。
それが不可能な場合は、別の方法はありますか?
これはおそらく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は改行を削除したいのですが、スペース文字などの他の空白に置き換えて、単語がそのまま残るようにします。)
改行を見つける方法は、オペレーティングシステムのエンコーディングによって異なります。 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, "")
印刷できない文字はすべて削除されます。 これは、ASCII HEXスペース0x20-0x7E
内の all文字 _ not _ です。必要に応じて自由にHEX範囲を変更してください。
var str = "bar\r\nbaz\nfoo";
str.replace(/[\r\n]/g, '');
>> "barbazfoo"
最も簡単な解決策は、
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]
改行文字を削除するにはこれを使います。
yourString.replace(/\r?\n?/g, '')
その後、文字列をトリミングして前後のスペースを削除できます。
yourString.trim()
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`)
});
正規表現の改行は\ nなので、あなたのスクリプトは
var test = 'this\nis\na\ntest\nwith\newlines';
console.log(test.replace(/\n/g, ' '));
私は答えを追加しています、それは上記の単なるアドオンです、私はすべての/ nオプションを試しましたが機能しませんでした、テキストがサーバーからダブルスラッシュで来ているのを見て、これを使用しました:
var fixedText = yourString.replace(/(\r\n|\n|\r|\\n)/gm, '');
次のコードを試してください。それはすべてのプラットフォームで動作します。
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'