2566 Stimmen

Wie kann ich das letzte Zeichen in einer Zeichenkette mit Javascript abschneiden/ausschneiden/abschneiden?

Ich habe eine Schnur, 12345.00 und ich möchte, dass sie zurückkehrt. 12345.0 .

Ich habe mir angesehen trim aber es sieht so aus, als würde es nur Leerzeichen und slice Ich wüsste nicht, wie das funktionieren sollte. Irgendwelche Vorschläge?

10 Stimmen

Wissen Sie, wie das Suffix lautet, oder wollen Sie das letzte Wort anhand der Unterstriche trennen und entfernen?

42 Stimmen

Ist Ihnen das Runden wichtig? 12345,46 = 12345,5 oder 12345,4?

3977voto

Jon Erickson Punkte 107332

Sie können die Teilstring Funktion:

let str = "12345.00";
str = str.substring(0, str.length - 1);
console.log(str);

Dies ist die akzeptierte Antwort, aber wie aus den Gesprächen unten hervorgeht, ist die slice Die Syntax ist viel klarer:

let str = "12345.00";
str = str.slice(0, -1); 
console.log(str);

37 Stimmen

@Kheu - ich finde die Slice-Notation viel sauberer. Ich habe vorher die Teilstring-Version verwendet. Danke!

40 Stimmen

Verzeihen Sie mir, wenn ich falsch liege, aber müssen Sie den Wert von str.substring nicht wieder str zuweisen? Wie str = str.substring(0, str.length -1);

15 Stimmen

El slice & substring Methoden sind fast alle gleich, außer dass die slice() akzeptiert einen negativen Index, relativ zum Ende der Zeichenkette, aber nicht den substring wirft er out-of-bound Fehler

1530voto

Jason S Punkte 178087

Sie können verwenden slice ! Man muss nur sicherstellen, dass man weiß, wie man es benutzt. Positive Zahlen beziehen sich auf den Anfang, negative Zahlen auf das Ende.

js>"12345.00".slice(0,-1)
12345.0

85 Stimmen

Verglichen mit der akzeptierten Lösung ist dies wesentlich eleganter und kann auch bei dynamisch erzeugten Zeichenketten verwendet werden

1 Stimmen

Ich mag diese Art und Weise, weil es mit php Denken für substr Funktion, leichter zu merken und schreiben auf der fliegenden.

2 Stimmen

@SameerAlibhai Ich stimme mit Ihnen überein, aber könnte nicht die substring Methode auch für dynamische Zeichenketten verwendet werden? Durch die Verwendung der str.length, um die Länge dynamisch zu erhalten?

280voto

Alex Martelli Punkte 805329

Sie können die Teilstring Methode von JavaScript-String-Objekten:

s = s.substring(0, s.length - 4)

Entfernt bedingungslos die letzten vier Zeichen aus der Zeichenkette s .

Wenn Sie jedoch unter Vorbehalt entfernen Sie die letzten vier Zeichen nur, wenn sie まさに _bar :

var re = /_bar$/;
s.replace(re, "");

108 Stimmen

slice ist hier besser. s.slice(0, -4)

15 Stimmen

Alternativ: s.slice(0, -"_bar".length) (nützlich, wenn man die Anzahl der Zeichen nicht fest eintippen möchte)

4 Stimmen

Das gefällt mir, weil er auch Hilfen zum Ersetzen eines bestimmten Endes gibt.

181voto

Tim Down Punkte 304837

Die einfachste Methode ist die Verwendung der slice Methode der Zeichenkette, die negative Positionen zulässt (entsprechend dem Versatz zum Ende der Zeichenkette):

const s = "your string";
const withoutLastFourChars = s.slice(0, -4);

Wenn Sie etwas Allgemeineres brauchen, um alles nach dem letzten Unterstrich (und einschließlich) zu entfernen, könnten Sie Folgendes tun (solange s enthält garantiert mindestens einen Unterstrich):

const s = "your_string";
const withoutLastChunk = s.slice(0, s.lastIndexOf("_"));
console.log(withoutLastChunk);

72voto

Paolo Bergantino Punkte 465120

Für eine Zahl wie Ihr Beispiel würde ich empfehlen, dies über substring :

console.log(parseFloat('12345.00').toFixed(1));

Beachten Sie jedoch, dass dadurch die Zahl gerundet wird, was vermutlich erwünscht ist, aber vielleicht auch nicht:

console.log(parseFloat('12345.46').toFixed(1));

12 Stimmen

+1 Das ist es, was OP braucht. Vergessen Sie die falsche Annahme, dass es Fäden gibt, die gestutzt werden müssen.

6 Stimmen

Das ist keine falsche Annahme, denn der Auftraggeber spricht von Saiten. Ihre Vermutung ist falsch, weil OP nicht über das Runden von Zahlen spricht.

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