Ich habe eine Zeichenfolge 12345.00
und möchte, dass sie zurückkehrt 12345.0
.
Ich habe es angeschaut trim
, aber es sieht so aus, als würde es nur Leerzeichen abschneiden und slice
ich sehe nicht, wie das funktionieren würde. Irgendwelche Vorschläge?
javascript
slice
trim
Phill Pafford
quelle
quelle
Math.round('0.5') === 1
;)Antworten:
Sie können die Teilzeichenfolgenfunktion verwenden:
Dies ist die akzeptierte Antwort, aber gemäß den folgenden Gesprächen ist die Slice- Syntax viel klarer:
quelle
str = str.substring(0, str.length -1);
slice
&substring
Methoden sind alle gleich; mit der Ausnahme, dass derslice()
einen negativen Index relativ zum Ende des Strings akzeptiert, aber nicht densubstring
, wirft er einenout-of-bound
Fehlersubstring
ist 11% schneller alsslice
. jsperf.com/js-slice-vs-substring-testSie können Slice verwenden ! Sie müssen nur sicherstellen, dass Sie wissen, wie man es benutzt. Positive #s sind relativ zum Anfang, negative Zahlen sind relativ zum Ende.
quelle
substring
Methode nicht auch für dynamische Zeichenfolgen verwendet werden? Indem Sie die Länge verwenden, um die Länge dynamisch zu ermitteln?Sie können die Teilzeichenfolgenmethode von JavaScript-Zeichenfolgenobjekten verwenden:
Es entfernt bedingungslos die letzten vier Zeichen aus der Zeichenfolge
s
.Wenn Sie jedoch die letzten vier Zeichen bedingt entfernen möchten , nur wenn sie genau sind
_bar
:quelle
slice
ist hier besser.s.slice(0, -4)
Die einfachste Methode ist die Verwendung der
slice
Methode der Zeichenfolge, die negative Positionen zulässt (entsprechend Offsets vom Ende der Zeichenfolge):Wenn Sie etwas Allgemeineres benötigen, um alles nach dem letzten Unterstrich zu entfernen (und einzuschließen), können Sie Folgendes tun (sofern
s
garantiert mindestens ein Unterstrich enthalten ist):quelle
Für eine Zahl wie Ihr Beispiel würde ich empfehlen, dies noch einmal zu tun
substring
:Beachten Sie jedoch, dass dies tatsächlich die Zahl rundet, was meiner Meinung nach erwünscht ist, aber vielleicht nicht:
quelle
Verwenden der Slice-Funktion von JavaScript:
Dies kann verwendet werden, um '_bar' am Ende einer Zeichenfolge beliebiger Länge zu entfernen.
quelle
Ein regulärer Ausdruck ist das, wonach Sie suchen:
quelle
Versuche dies:
quelle
Wie wäre es mit:
quelle
Verwenden Sie Regex:
quelle
quelle
quelle
Hier ist eine Alternative, die ich nicht in den anderen Antworten gesehen habe, nur zum Spaß.
Nicht so lesbar oder einfach wie Slice oder Teilstring, aber Sie können mit der Saite mit einigen netten Array-Methoden spielen, die es wert sind, kennengelernt zu werden.
quelle
quelle
Der kürzeste Weg:
quelle
Wenn Sie generische Floats runden möchten, anstatt nur das letzte Zeichen zu kürzen:
EDIT: Es scheint, dass es dafür eine eingebaute Funktion gibt, wie Paolo betont. Diese Lösung ist offensichtlich viel sauberer als meine. Verwenden Sie parseFloat gefolgt von toFixed
quelle
quelle
https://jsfiddle.net/invos/w3zeqv6v/
/programming/34817546/javascript-how-to-delete-last-two-characters-in-a-string
"11.01 °C".slice(0,-2).trim()
quelle
Performance
Heute 2020.05.13 teste ich ausgewählte Lösungen unter Chrome v81.0, Safari v13.1 und Firefox v76.0 unter MacOs High Sierra v10.13.6.
Schlussfolgerungen
slice(0,-1)
(D) sind schnell oder schnellste Lösung für kurze und lange Ketten , und es wird so schnell Cross-Browser - Lösung empfohlensubstring
(C) undsubstr
(E) sind schnellEinzelheiten
Ich führe zwei Tests für die Lösungen A , B , C , D , E ( ext ), F , G (my) durch.
Die Lösungen sind im folgenden Ausschnitt dargestellt
Code-Snippet anzeigen
Hier sind Beispielergebnisse für Chrome für kurze Zeichenfolgen
quelle
Beachten Sie, dass
String.prototype.{ split, slice, substr, substring }
UTF-16-codierte Zeichenfolgen verwendet werdenKeine der vorherigen Antworten ist Unicode-fähig. Zeichenfolgen werden in den meisten modernen JavaScript-Engines als UTF-16 codiert, höhere Unicode-Codepunkte erfordern jedoch Ersatzpaare. Daher arbeiten ältere, bereits vorhandene Zeichenfolgenmethoden mit UTF-16-Codeeinheiten und nicht mit Unicode-Codepunkten.
Außerdem stimmen die RegExp-Antworten nicht mit den Zeilenumbrüchen am Ende in ihrer aktuellen Form überein:
Verwenden Sie den String-Iterator, um Zeichen zu iterieren
Unicode-fähiger Code verwendet den Iterator der Zeichenfolge. sehen
Array.from
und...
verbreiten .string[Symbol.iterator]
kann verwendet werden (zB anstelle vonstring
).Siehe auch So teilen Sie Unicode-Zeichenfolgen in Zeichen in JavaScript .
Beispiele:
Verwenden Sie die
s
undu
-Flaggen auf aRegExp
Das Flag
dotAll
oders
macht.
Zeichen für Zeilenumbrüche, das Flagunicode
oderu
aktiviert bestimmte Unicode-bezogene Funktionen.Beispiele:
Es ist zu beachten, dass einige Grapheme aus mehr als einem Codepunkt bestehen, z. B.
🏳️🌈
der aus der Sequenz🏳
(U + 1F3F3),VS16
(U + FE0F) ,ZWJ
(U + 200D) ,🌈
(U + 1F308) besteht. HierArray.from
wird dies sogar in vier "Zeichen" aufgeteilt. Das Abgleichen dieser ist mit der Unicode-Eigenschaft möglich, die dem Vorschlag für Sequenzeigenschaften entgeht .quelle
In Fällen, in denen Sie etwas entfernen möchten, das sich nahe am Ende einer Zeichenfolge befindet (bei Zeichenfolgen mit variabler Größe), können Sie Slice () und Substr () kombinieren.
Ich hatte eine Zeichenfolge mit dynamisch erstelltem Markup mit einer durch Komma getrennten Liste von Ankertags. Die Saite war so etwas wie:
Um das letzte Komma zu entfernen, habe ich Folgendes getan:
quelle
Versuche dies:
Sie können das Live-Arbeitsbeispiel auch unter http://jsfiddle.net/informativejavascript/F7WTn/87/ ausprobieren .
quelle
Entschuldigung für meine Graphomany, aber der Beitrag wurde früher mit 'jquery' markiert. So können Sie nicht verwenden slice () innerhalb jQuery weil slice () jQuery - Methode für den Betrieb mit DOM - Elemente, nicht Substrings ... Mit anderen Worten beantworten @ Jon Erickson vorschlagen wirklich perfekte Lösung.
Ihre Methode funktioniert jedoch mit der jQuery-Funktion in einfachem Javascript. Aufgrund der letzten Diskussion in den Kommentaren muss gesagt werden, dass jQuery sehr viel häufiger eine erneuerbare Erweiterung von JS ist als das bekannteste ECMAScript seines eigenen Elternteils.
Hier existieren auch zwei Methoden:
als unsere:
string.substring(from,to)
as plus if 'to' index nulled gibt den Rest der Zeichenfolge zurück. also:string.substring(from)
positiv oder negativ ...und einige andere - substr () -, die einen Bereich von Teilzeichenfolgen und 'Länge' bereitstellen, können nur positiv sein:
string.substr(start,length)
Einige Betreuer schlagen außerdem vor, dass die letzte Methode
string.substr(start,length)
für MSIE nicht funktioniert oder mit Fehlern funktioniert.quelle
String.prototype.slice
ist eine native Methodeslice()
Methode für die DOM-Manipulation: jQuery-API: .slice () . Und sicher, das kann wie eine polymorphe Vererbung von JS Array.slice () dargestellt werden, aber es sind zwei verschiedene Methoden, und ich denke, es muss unterschieden werden. Es ist also nur eine Annäherung an dieses Wissen..slice
eine Variable aufrufen , die eine Zeichenfolge ist, wird sie genau das tun, was das OP wollte. Es spielt keine Rolle, ob es sich um "inside jQuery" handelt, und es kann auf keinen Fall "stören", es sei denn, Sie überschreibenString.prototype
jQuery, was sicher verhindert, dass Javascript-Code funktioniert. Ihre Antwort besagt nur, dass die andere Antwort nicht gut ist und das von Ihnen angegebene Argument falsch ist..data
Manipulation durchführen und mit dieser "Zeichenfolge" enden), die, wenn Sieslice
sie aufrufen , würde nicht tun was du willst. Dies ist jedoch keine wirklich hilfreiche Antwort.Verwenden Sie Teilzeichenfolgen, um alles links von _bar anzuzeigen. Aber zuerst müssen Sie die Instrumente von _bar in der Zeichenfolge erhalten:
3 ist der Start und 7 ist die Länge.
quelle