textareaにテキストがあり、.value属性を使用してテキストを読み取ります。
.replaceを正規表現で使用して、テキストからすべての改行(を押したときに生成される文字Enter)を削除したいのですが、正規表現で改行を示すにはどうすればよいですか?
それが不可能な場合、別の方法はありますか?
textareaにテキストがあり、.value属性を使用してテキストを読み取ります。
.replaceを正規表現で使用して、テキストからすべての改行(を押したときに生成される文字Enter)を削除したいのですが、正規表現で改行を示すにはどうすればよいですか?
それが不可能な場合、別の方法はありますか?
改行を見つける方法は、オペレーティングシステムのエンコーディングによって異なります。Windowsはそう\r\n
ですが、Linuxはただ使用し\n
、Appleはを使用します\r
。
私はこれをJavaScriptの改行で見つけました:
someText = someText.replace(/(\r\n|\n|\r)/gm, "");
これにより、あらゆる種類の改行が削除されます。
改行(より良い:改行)は、キャリッジリターン(CR 、、\r
古いMacの場合)、ラインフィード(LF 、、 \n
Linuxを含むUnicesの場合)、またはCRの後にLF(\r\n
、WinDOSの場合)のいずれかになります。(別の答えとは異なり、これは文字エンコードとは何の関係もありません。)
したがって、すべてのバリアントに一致する最も効率的なRegExp
リテラルは次のとおりです。
/\r?\n|\r/
文字列内のすべての改行を一致させる場合は、グローバル一致を使用します。
/\r?\n|\r/g
それぞれ。次に、replace
他のいくつかの回答で提案されている方法に進みます。(おそらく、改行を削除したくないが、単語がそのまま残るように、改行を他の空白(スペース文字など)に置き換えます。)
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/
ノート!文字列の先頭と末尾のみをトリミングし、文字列の途中の改行や空白はトリミングしません。
\n
正規表現で改行と\r
キャリッジリターンに使用できます。
var str2 = str.replace(/\n|\r/g, "");
\n
オペレーティングシステムが異なれば、との混合が異なるさまざまな行末を使用します\r
。この正規表現はそれらすべてを置き換えます。
最も簡単な解決策は次のとおりです。
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]
CRとLFを含むすべての制御文字を削除する場合は、次を使用できます。
myString.replace(/[^\x20-\x7E]/gmi, "")
印刷できない文字はすべて削除されます。これはすべて、ASCIIHEXスペース内にない0x20-0x7E
文字です。必要に応じて、HEX範囲を自由に変更してください。
var str = "bar\r\nbaz\nfoo";
str.replace(/[\r\n]/g, '');
>> "barbazfoo"
改行文字を削除するには、次を使用します。
yourString.replace(/\r?\n?/g, '')
次に、文字列をトリミングして、先頭と末尾のスペースを削除できます。
yourString.trim()
以下のこの機能を使用して、あなたの生活を楽にしてください
最も簡単なアプローチは、正規表現を使用して文字列内の改行を検出して置換することです。この場合、replace関数と文字列を使用して置換します。この場合は空の文字列です。
function remove_linebreaks( var message ) {
return message.replace( /[\r\n]+/gm, "" );
}
上記の式で、gとmはグローバルフラグとマルチラインフラグ用です
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`)
});
簡単に使用して新しい行を削除できます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);
正規表現の改行は\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'
 
このhtm文字のshileを使用する必要がない場合は、これstr.replace(/(\r\n|\n|\r)/gm, "")
を使用できますstr.split('\n').join('');
乾杯
私はよくこの正規表現を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アプリのテキストには十分です。
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('');
Macでは\n
、正規表現で使用して改行を一致させます。したがって、コードはstring.replace(/\n/g, '')
、psになります。gが続くということは、最初のコードだけでなく、すべてに一致することを意味します。
Windowsでは。になります\r\n
。
const text ='test \ nwith \ nline \ nbreaks'
const textWithoutBreaks = text.split('\ n')。join('')