ある\n
すべてのプラットフォーム用のJavascriptユニバーサル改行文字列は?そうでない場合、現在の環境のキャラクターをどのように決定しますか?
HTMLの改行要素(<BR/>
)については質問していません。JavaScript文字列内で使用される改行文字シーケンスについて質問しています。
getValue
関数を持っていvalue
ますvalue.replace(/\r\n/g,'\n')
-ブラウザー/プラットフォーム間で出力の一貫性を保つためだけです。
ある\n
すべてのプラットフォーム用のJavascriptユニバーサル改行文字列は?そうでない場合、現在の環境のキャラクターをどのように決定しますか?
HTMLの改行要素(<BR/>
)については質問していません。JavaScript文字列内で使用される改行文字シーケンスについて質問しています。
getValue
関数を持っていvalue
ますvalue.replace(/\r\n/g,'\n')
-ブラウザー/プラットフォーム間で出力の一貫性を保つためだけです。
回答:
この愚かなJavaScriptを使用していくつかのブラウザーをテストしました。
function log_newline(msg, test_value) {
if (!test_value) {
test_value = document.getElementById('test').value;
}
console.log(msg + ': ' + (test_value.match(/\r/) ? 'CR' : '')
+ ' ' + (test_value.match(/\n/) ? 'LF' : ''));
}
log_newline('HTML source');
log_newline('JS string', "foo\nbar");
log_newline('JS template literal', `bar
baz`);
<textarea id="test" name="test">
</textarea>
Windows上のIE8とOpera 9が使用します\r\n
。私がテストした他のすべてのブラウザ(WindowsではSafari 4とFirefox 3.5、LinuxではFirefox 3.0)はを使用しています\n
。\n
値を設定するとき、それらはすべてうまく処理できますが、IEとOperaはそれを\r\n
内部的に再び変換します。呼ばれるいくつかのより多くの詳細をSitePointの記事がありますJavaScriptで行末が。
これはHTMLファイル自体の実際の行末とは独立していることにも注意してください(両方\n
と\r\n
同じ結果を与えます)。
フォームを送信すると、すべてのブラウザが改行を%0D%0A
URLエンコーディングに正規化します。それを確認するには、eg data:text/html,<form><textarea name="foo">foo%0abar</textarea><input type="submit"></form>
をロードして、送信ボタンを押してください。(一部のブラウザーは、送信されたページのロードをブロックしますが、URLエンコードされたフォームの値をコンソールに表示できます。)
とはいえ、あなたが決定することの多くを実際に行う必要はないと思います。改行でテキストを分割したいだけなら、次のようにすることができます:
lines = foo.value.split(/\r\n|\r|\n/g);
\r\n
。1行ではなく2行の改行として扱われるためです。短くしたい場合は、/\r?\n/g
たぶんそうするでしょう(とにかくMac OS 9を使っているのは誰ですか?)
はい、それは普遍的です。
が'\n'
普遍的である改行文字、あなたは(あなたの入力に応じて、改行文字はキャリッジリターン文字が先行されるかもしれない、ということを念頭に維持する必要があります'\r'
)。
「\ n」は使用しないでください。ちょうどこれを試してください:
var string = "this\
is a multi\
line\
string";
バックスラッシュを入力して、トラックインを続けるだけです!魅力のように機能します。
tilde
文字付きの複数行の値もサポートします(そうでない場合はバックティックと呼ばれます)。
はい、使用したいHTMLコードを生成している場合を除き、\ nを使用します <br />
メールリンク機能「%0D%0A」を使用
function sendMail() {
var bodydata="Before "+ "%0D%0A";
bodydata+="After"
var MailMSG = "mailto:aaa@sss.com"
+ "?cc=07@sss.com"
+ "&subject=subject"
+ "&body=" + bodydata;
window.location.href = MailMSG;
}
[HTML]
<a href="#" onClick="sendMail()">Contact Us</a>
現在のブラウザーの行セパレーターを取得します。
function getLineSeparator() {
var textarea = document.createElement("textarea");
textarea.value = "\n";
return textarea.value;
}
return textarea.value;
ですか?
注-ExtendScript JavaScript(Photoshop CS3 +などのアプリケーションで使用されるAdobe Scripting言語)を使用する場合、使用する文字は「\ r」です。「\ n」はフォント文字として解釈されるため、多くのフォントは代わりにブロック文字を持ちます。
例(「ノート」という名前のレイヤーを選択し、すべてのピリオドの後に改行を追加するには):
var layerText = app.activeDocument.artLayers.getByName('Note').textItem.contents;
layerText = layerText.replace(/\. /g,".\r");
\n
し、<br/>
私のPhotoshopのスクリプトで働いていなかった...ありがとう!
\ nまたは\ r \ nで改行を表現するのに問題がありました。
魔法のように、復帰に使用される文字\ rは、改行のように機能しました。
したがって、場合によっては、\ rも考慮すると便利です。
実際の観察...私のNodeJSスクリプトには、次の関数があります。
function writeToLogFile (message) {
fs.appendFile('myserverlog.txt', Date() + " " + message + "\r\n", function (err) {
if (err) throw err;
});
}
最初は「\ n」しかありませんでしたが、メモ帳でログファイルを開くと、すべてのエントリが同じ行に表示されていることに気付きました。一方、Notepad ++では、それぞれの行にエントリが表示されます。コードを「\ r \ n」に変更すると、メモ帳でもすべてのエントリが1行に表示されます。