В JavaScript строки символ новой строки?
и n универсальная последовательность символов новой строки в Javascript для всех платформ? Если нет, то как определить символ для текущей среды?
Я не спрашиваю об элементе HTML newline (<BR/>). Я спрашиваю о последовательности символов новой строки, используемой в строках JavaScript.
16 ответов:
Я только что протестировал несколько браузеров, используя этот глупый бит 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>IE8 и Opera 9 в Windows используют
\r\n. Все другие браузеры, которые я тестировал (Safari 4 и Firefox 3.5 на Windows и Firefox 3.0 на Linux) используют\n. Они все могут справиться\nпросто отлично при установке значения, хотя IE и Opera преобразуют это обратно в\r\nснова внутренне. Есть статья SitePoint с более подробной информацией под названием окончания строк в Javascript.обратите внимание также, что это не зависит от фактических окончаний строк в самом HTML-файле (оба
\nи\r\nдать те же результаты).при отправке формы все браузеры канонизируют новые строки в
%0D%0Aв кодировке URL-адреса. Чтобы увидеть это, загрузите, например,data:text/html,<form><textarea name="foo">foo%0abar</textarea><input type="submit"></form>и нажимаем кнопку "Отправить". (Некоторые браузеры блокируют загрузку отправленной страницы, но вы можете видеть значения формы в кодировке URL в консоли.)Я не думаю, что вам действительно нужно делать много определяющих, хотя. Если вы просто хотите разделить текст на новые строки, вы можете сделать что-то вроде этого:
lines = foo.value.split(/\r\n|\r|\n/g);
Да, она универсальна.
хотя
'\n'- Это универсальный новая строка символы, вы должны иметь в виду, что, в зависимости от вашего ввода, новые символы строки могут предшествовать символам возврата каретки ('\r').
Не используйте \n, просто попробуйте это:
var string = "this\ is a multi\ line\ string";просто введите обратную косую черту и продолжай в том же духе! Работает как шарм.
было бы проще всего просто обрабатывать все случаи нового символа строки, а не проверять, какой случай, а затем применять его. Например, если вам нужно заменить новую строку, выполните следующие действия:
htmlstring = stringContainingNewLines.replace(/(\r\n|\n|\r)/gm, "<br>");
функция электронной почты ссылка я использую "%0D%0A"
function sendMail() { var bodydata="Before "+ "%0D%0A"; bodydata+="After" var MailMSG = "mailto:[email protected]" + "[email protected]" + "&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; }
Примечание-при использовании ExtendScript JavaScript (язык сценариев Adobe, используемый в таких приложениях, как Photoshop CS3+), используется символ "\r". "\n " будет интерпретироваться как символ шрифта, и многие шрифты, таким образом, будут иметь символ блока вместо этого.
например (чтобы выбрать слой с именем 'Note' и добавить каналы строк после всех периодов):
var layerText = app.activeDocument.artLayers.getByName('Note').textItem.contents; layerText = layerText.replace(/\. /g,".\r");
в ответ Nilay выше (я не могу комментировать, не хватает репутации):
кто-нибудь знает этот тип кода для клавиши tab? я пробовал "%0D % 09 " но не работать. - Нилай 26 '15 сентября в 13:57
Tab-это один символ, так что если вы попробуете просто %09 это должно быть хорошо. Пример для просмотра отдельных кодов символов:
var output = ""; var s="aaa\tbbb\tccc"; for (var i = 0; i < s.length; i++) { output += "i=" + i + " charAt=" + s.charAt(i) + " charCodeAt=" + s.charCodeAt(i) + "\n"; } console.log(output);
У меня была проблема выражения строку с \n или \r\n.
Волшебный персонаж \r который используется для возврата каретки работал для меня, как строки.
Поэтому в некоторых случаях полезно рассмотреть \r тоже.
вы можете использовать ` кавычки (которые находятся ниже кнопки Esc) с ES6. Так что вы можете написать что-то вроде этого:
var text = `fjskdfjslfjsl skfjslfkjsldfjslfjs jfsfkjslfsljs`;
Я считаю, что это -- когда вы работаете со строками JS.
Если вы создаете HTML, хотя, вам придется использовать
<br />теги (не\n, так как вы больше не имеете дело с JS)
printAccountSummary: function() {return "Welcome!" + "\n" + "Your balance is currently 00 and your interest rate is 1%."} }; console.log(savingsAccount.printAccountSummary()); // methodпринты:
Welcome! Your balance is currently 00 and your interest rate is 1%.
вы можете использовать шестнадцатеричные значения ascii, что-то вроде этого(это сработало для меня):
var string = "this %0d%0a is a multiline %0d%0a string";результат будет такой:
this is a multiline string
The
\nпросто отлично подходит для всех случаев, с которыми я столкнулся. Я вам работаю с web, используйте\nи не беспокойтесь об этом (если у вас не было каких-либо проблем, связанных с новой строкой).
Comments