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?
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?
String.prototype.{ split, slice, substr, substring }
mit UTF-16 kodierten Zeichenketten arbeitenKeine der bisherigen Antworten ist Unicode-fähig. Strings werden in den meisten modernen JavaScript-Engines als UTF-16 kodiert, aber höhere Unicode-Codepunkte erfordern Surrogatpaare Daher arbeiten ältere, bereits existierende String-Methoden mit UTF-16-Codeeinheiten, nicht mit Unicode-Codepunkten. Siehe: NICHT verwenden .split('')
.
const string = "";
console.log(string.slice(0, -1)); // "\ud83e"
console.log(string.substr(0, string.length - 1)); // "\ud83e"
console.log(string.substring(0, string.length - 1)); // "\ud83e"
console.log(string.replace(/.$/, "")); // "\ud83e"
console.log(string.match(/(.*).$/)[1]); // "\ud83e"
const utf16Chars = string.split("");
utf16Chars.pop();
console.log(utf16Chars.join("")); // "\ud83e"
Darüber hinaus, RegExp
Methoden, wie in älteren Antworten vorgeschlagen, nicht mit den Zeilenumbrüchen am Ende übereinstimmen:
const string = "Hello, world!\n";
console.log(string.replace(/.$/, "").endsWith("\n")); // true
console.log(string.match(/(.*).$/) === null); // true
Unicode-fähiger Code verwendet den Iterator der Zeichenkette; siehe Array.from
y ...
Verbreitung . string[Symbol.iterator]
verwendet werden (z. B. anstelle von string
) sowie.
Siehe auch Aufteilung von Unicode-Strings in Zeichen in JavaScript .
Beispiele:
const string = "";
console.log(Array.from(string).slice(0, -1).join("")); // ""
console.log([
...string
].slice(0, -1).join("")); // ""
s
y u
Flaggen auf einem RegExp
El dotAll
o s
Flagge macht .
mit Zeilenumbruchzeichen übereinstimmen, die unicode
o u
Flagge aktiviert bestimmte Unicode-bezogene Funktionen. Beachten Sie, dass bei Verwendung der Option u
eliminieren Sie unnötige Identitäts-Escapes, da diese sind ungültig in einem u
regex z.B. \[
ist in Ordnung, da es eine Zeichenklasse ohne den Backslash beginnen würde, aber \:
ist es nicht, denn es ist ein :
mit oder ohne Backslash, daher müssen Sie den Backslash entfernen.
Beispiele:
const unicodeString = "",
lineBreakString = "Hello, world!\n";
console.log(lineBreakString.replace(/.$/s, "").endsWith("\n")); // false
console.log(lineBreakString.match(/(.*).$/s) === null); // false
console.log(unicodeString.replace(/.$/su, "")); //
console.log(unicodeString.match(/(.*).$/su)[1]); //
// Now `split` can be made Unicode-aware:
const unicodeCharacterArray = unicodeString.split(/(?:)/su),
lineBreakCharacterArray = lineBreakString.split(/(?:)/su);
unicodeCharacterArray.pop();
lineBreakCharacterArray.pop();
console.log(unicodeCharacterArray.join("")); // ""
console.log(lineBreakCharacterArray.join("").endsWith("\n")); // false
Beachten Sie, dass manche Grapheme aus mehr als einem Codepunkt bestehen, z. B. die aus der Sequenz (U+1F3F3), VS16
(U+FE0F) , ZWJ
(U+200D) , (U+1F308). Hier, sogar Array.from
wird dies in vier "Zeichen" aufgeteilt. Deren Zuordnung wird durch die Option RegExp-Satznotation und Eigenschaften von Zeichenketten Vorschlag .
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.
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?