В JavaScript строки символ новой строки?



и n универсальная последовательность символов новой строки в Javascript для всех платформ? Если нет, то как определить символ для текущей среды?



Я не спрашиваю об элементе HTML newline (<BR/>). Я спрашиваю о последовательности символов новой строки, используемой в строках JavaScript.

970   16  

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>");

да использовать \n, если вы не генерируете html-код, в котором вы хотите использовать <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 и не беспокойтесь об этом (если у вас не было каких-либо проблем, связанных с новой строкой).

можно использовать <br/> и document.write/,document.writeln один.

Comments

    Ничего не найдено.