JavaScript-tekenreeks nieuwe regel?

Is \nde universele tekenreeks voor nieuwe regels in Javascript voor alle platforms? Zo niet, hoe bepaal ik dan het karakter voor de huidige omgeving?

Ik vraag niet naar het HTML-element voor de nieuwe regel (<br/>). Ik vraag naar de tekenreeks voor nieuwe regels die wordt gebruikt in JavaScript-tekenreeksen.


Antwoord 1, autoriteit 100%

Ik heb zojuist een paar browsers getest met dit gekke stukje 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>

Antwoord 2, autoriteit 23%

Ja, het is universeel.

Hoewel '\n'de universele newline-tekens zijn, moet u er rekening mee houden dat, afhankelijk van uw invoer, nieuwe regeltekens kunnen worden voorafgegaan door een regelterugloop tekens ('\r').


Antwoord 3, autoriteit 19%

Gebruik “\n” niet. Probeer dit eens:

var string = "this\
is a multi\
line\
string";

Voer gewoon een back-slash in en blijf rijden! Werkt als een tierelier.


Antwoord 4, autoriteit 15%

Het is misschien het gemakkelijkst om alle hoofdletters van het nieuwe regelteken af te handelen in plaats van te controleren welke hoofdletters en vervolgens het toe te passen. Als u bijvoorbeeld de nieuwe regel moet vervangen, doet u het volgende:

htmlstring = stringContainingNewLines.replace(/(\r\n|\n|\r)/gm, "<br>");

Antwoord 5, autoriteit 7%

ja gebruik \n, tenzij u html-code genereert waarin u <br />

wilt gebruiken


Antwoord 6, autoriteit 4%

E-maillinkfunctie die ik gebruik “%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>

Antwoord 7, autoriteit 2%

Een regelscheidingsteken voor de huidige browser ophalen:

function getLineSeparator() {
  var textarea = document.createElement("textarea");
  textarea.value = "\n"; 
  return textarea.value;
}

Antwoord 8, autoriteit 2%

U kunt “ aanhalingstekens gebruiken (die onder de Esc-knop staan) met ES6. Je kunt dus zoiets schrijven:

var text = `fjskdfjslfjsl
skfjslfkjsldfjslfjs
jfsfkjslfsljs`;

Antwoord 9

Opmerking: wanneer u ExtendScript JavaScript gebruikt (de Adobe Scripting-taal die wordt gebruikt in toepassingen zoals Photoshop CS3+), is het teken dat u moet gebruiken “\r”. “\n” wordt geïnterpreteerd als een letterteken, en veel lettertypen zullen dus in plaats daarvan een blokletter hebben.

Bijvoorbeeld (om een laag met de naam ‘Opmerking’ te selecteren en regelinvoer toe te voegen na alle punten):

var layerText = app.activeDocument.artLayers.getByName('Note').textItem.contents;
layerText = layerText.replace(/\. /g,".\r");

Antwoord 10

Ik had het probleem om een nieuwe regel uit te drukken met \nof \r\n.
Op magische wijze werkte het teken \rdat wordt gebruikt voor regelterugloop voor mij als een nieuwe regel.
Dus in sommige gevallen is het nuttig om ook \r te overwegen.


Antwoord 11

printAccountSummary: function()
        {return "Welcome!" + "\n" + "Your balance is currently $1000 and your interest rate is 1%."}
};
console.log(savingsAccount.printAccountSummary()); // method

Afdrukken:

Welcome!
Your balance is currently $1000 and your interest rate is 1%.

Antwoord 12

Ik geloof van wel — als je met JS-strings werkt.

Als u echter HTML genereert, moet u <br />-tags gebruiken (niet \n, aangezien u niet met JS te maken hebt meer)


Antwoord 13

Een praktische observatie… In mijn NodeJS-script heb ik de volgende functie:

function writeToLogFile (message) {
    fs.appendFile('myserverlog.txt', Date() + " " + message + "\r\n", function (err) {
        if (err) throw err;
    });
}

Eerst had ik alleen “\n”, maar ik merkte dat wanneer ik het logbestand in Kladblok open, alle items op dezelfde regel worden weergegeven. Notepad++ daarentegen toont de items elk op hun eigen regel. Na het wijzigen van de code in “\r\n”, toont zelfs Kladblok elk item op zijn eigen regel.


Antwoord 14

De \nis prima voor alle gevallen die ik ben tegengekomen. Als je met internet werkt, gebruik dan \nen maak je er geen zorgen over (tenzij je problemen hebt gehad met nieuwe regels).


Antwoord 15

je kunt <br/>en de document.write/, document.writelngebruiken.

Other episodes