121 Stimmen

Wie man die Anzahl der Zeilen eines Strings in Javascript zählt

Ich möchte die Anzahl der Zeilen in einer Zeichenkette zählen. Ich habe versucht, diese Stackoverflow-Antwort zu verwenden,

lines = str.split("\r\n|\r|\n"); 
return  lines.length;

auf diese Zeichenfolge (die ursprünglich ein Puffer war):

 GET / HTTP/1.1
 Host: localhost:8888
 Connection: keep-alive
 Cache-Control: max-age=0
 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.2 (KHTML,like Gecko) Chrome/15.0.874.121 Safari/535.2
 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
 Accept-Encoding: gzip,deflate,sdch
 Accept-Language: en-US,en;q=0.8
 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

und, aus irgendeinem Grund, bekam ich lines='1' .

Haben Sie eine Idee, wie das funktionieren kann?

3voto

Joe Punkte 518

Es gibt drei Möglichkeiten:

Verwendung von jQuery (herunterladen von jQuery-Website ) - jquery.com

var lines = $("#ptest").val().split("\n");
return lines.length;

Regex verwenden

var lines = str.split(/\r\n|\r|\n/);
return lines.length;

Oder eine Nachbildung einer for each-Schleife

var length = 0;
for(var i = 0; i < str.length; ++i){
    if(str[i] == '\n') {
        length++;
    }
}
return length;

2voto

hashed_name Punkte 543

Bessere Lösung, da str.split(" \n ") erzeugt ein neues Array von Strings, die durch " \n ", was schwerer ist als str.match(/ \n\g ). str.match(/ \n\g ) erzeugt nur ein Array mit übereinstimmenden Elementen. Das ist " \n " in unserem Fall.

var totalLines = (str.match(/\n/g) || '').length + 1;

2voto

gil.fernandes Punkte 11143

Eine andere Lösung für dieses Problem, bei der der Spreizungsoperator und keine regulären Ausdrücke verwendet werden, wäre:

const lines = [...csv].reduce((a, c) => a + (c === '\n' ? 1 : 0), 0)

const csv = `
demo_budget_2021_v4_wk_9,test,Civil,Spares,test,false,12,2021,100
demo_budget_2021_v4_wk_9,test,Civil,Spares,test,false,11,2021,100
demo_budget_2021_v4_wk_9,test,Civil,Spares,test,false,10,2021,100
demo_budget_2021_v4_wk_9,test,Civil,Spares,test,false,9,2021,100
`

const lines = [...csv].reduce((a, c) => a + (c === '\n' ? 1 : 0), 0)

console.log(lines);

1voto

Sandeep G B Punkte 3859

Hier ist das Arbeitsbeispiel fiddle

Entfernen Sie einfach zusätzliche \r\n und "|" aus Ihrer Reg ex.

1voto

Krishna Jangid Punkte 3743
 <script type="text/javascript">
      var multilinestr = `
        line 1
        line 2
        line 3
        line 4
        line 5
        line 6`;
      totallines = multilinestr.split("\n");
lines = str.split("\n"); 
console.log(lines.length);
</script>

Das funktioniert in meinem Fall

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X