820 Stimmen

Das erste Zeichen der Zeichenkette löschen, wenn es 0 ist

Ich möchte das erste Zeichen einer Zeichenkette löschen, wenn das erste Zeichen eine 0 ist. Die 0 kann mehr als einmal vorkommen.

Gibt es eine einfache Funktion, die das erste Zeichen überprüft und es löscht, wenn es 0 ist?

Im Moment versuche ich es mit dem JS slice() Funktion, aber sie ist sehr umständlich.

1321voto

Shaded Punkte 16400

Sie können das erste Zeichen einer Zeichenkette entfernen, indem Sie substring :

var s1 = "foobar";
var s2 = s1.substring(1);
alert(s2); // shows "oobar"

Um alle 0en am Anfang der Zeichenkette zu entfernen:

var s = "0000test";
while(s.charAt(0) === '0')
{
 s = s.substring(1);
}

12 Stimmen

@Stephen: In diesem Fall würde es keinen Unterschied machen, weil charAt gibt immer eine Zeichenkette zurück, auch wenn der Index den Index des letzten Zeichens überschreitet, so dass keine Typumwandlung durchgeführt wird und der Algorithmus letztendlich identisch ist. Aber ich bevorzuge === über == auch wenn es keinen Unterschied macht. ;)

1 Stimmen

@user113716 Wäre das nicht genau der Grund für die Verwendung von ===, damit Javascript nicht prüfen muss, ob die Typen gleich sind?

0 Stimmen

@Hejner: Der Leistungsunterschied ist bei modernen JS-Engines vernachlässigbar, also ist es ziemlich unnötig. Hängt von Ihrer Präferenz ab.

249voto

jave.web Punkte 12114

Sehr lesbarer Code ist zu verwenden .substring() mit einem Start, der auf den Index des zweiten Zeichens (1) gesetzt ist (das erste Zeichen hat den Index 0). Der zweite Parameter der .substring() Methode ist eigentlich optional, Sie müssen also nicht einmal die .length() ...

TL;DR : Das erste Zeichen aus der Zeichenkette entfernen:

str = str.substring(1);

...ja, so einfach ist das...

Entfernen eines oder mehrerer bestimmter Zeichen:

Wie @Shaded vorgeschlagen hat, führen Sie eine Schleife durch, solange das erste Zeichen Ihrer Zeichenkette das "unerwünschte" Zeichen ist...

var yourString = "0000test";
var unwantedCharacter = "0";
//there is really no need for === check, since we use String's charAt()
while( yourString.charAt(0) == unwantedCharacter ) yourString = yourString.substring(1);
//yourString now contains "test"

.slice() gegen .substring() gegen .substr()

EDIT: substr() ist nicht standardisiert und sollte nicht für neue JS-Codes verwendet werden. Man ist vielleicht geneigt, es wegen der Namensähnlichkeit mit anderen Sprachen, z.B. PHP, zu verwenden, aber selbst in PHP sollte man wahrscheinlich mb_substr() um in der modernen Welt sicher zu sein :)

Zitat von (und mehr dazu in) Was ist der Unterschied zwischen String.slice und String.substring?

Er weist auch darauf hin, dass, wenn die zu schneidenden Parameter negativ sind, sie die Zeichenfolge vom Ende her referenzieren. Bei Substring und substr ist das nicht der Fall.

109voto

user113716 Punkte 309387

Verwenden Sie .charAt() et .slice() .

Beispiel: http://jsfiddle.net/kCpNQ/

var myString = "0String";

if( myString.charAt( 0 ) === '0' )
    myString = myString.slice( 1 );

Wenn es mehrere sein könnten 0 Zeichen am Anfang, können Sie die if() zu einer while() .

Beispiel: http://jsfiddle.net/kCpNQ/1/

var myString = "0000String";

while( myString.charAt( 0 ) === '0' )
    myString = myString.slice( 1 );

0 Stimmen

Funktioniert großartig. Plus, .substr es Abgelehnt .

0 Stimmen

Const pathnameStandardized = pathname.charAt(0) === '/' ? pathname.slice(1) : pathname

88voto

Tim Down Punkte 304837

Der einfachste Weg, alle führenden 0 s ist:

var s = "00test";
s = s.replace(/^0+/, "");

Wenn nur ein einziger führender Punkt entfernt wird 0 Zeichen, wie die Frage andeutet, könnten Sie verwenden

s = s.replace(/^0/, "");

28voto

Andrew Punkte 6998

Sie können dies tun mit Teilstring Methode:

let a = "My test string";

a = a.substring(1);

console.log(a); // y test string

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