Wie bekomme ich das erste Zeichen einer Zeichenfolge?


595

Ich habe eine Zeichenfolge und muss das erste Zeichen erhalten.

var x = 'somestring';
alert(x[0]); //in ie7 returns undefined

Wie kann ich meinen Code reparieren?


5
Sei einfach vorsichtig - vielleicht hast du dort keinen Charakter zum Extrahieren!
CorsiKa

Antworten:


1046

Was du willst ist charAt.

var x = 'some string';
alert(x.charAt(0)); // alerts 's'

11
Arbeitete auf IE7, Chrome, Firefox.
Yuriy Faktorovich

78
Ich wollte nur das MDN-Dokument hier lassen. Generell bevorzuge ich dies gegenüber w3schools.
Danwit

12
x.charAt()Gibt auch das erste Zeichen zurück, als ob kein Index an diese Methode übergeben wird. Es wird davon ausgegangen, dass an 0.
Mohammad Usman

1
@MohammadUsman Während das, was Sie sagen, wahr ist, läuft charAt () ohne Parameter in Firefox ab Firefox 71 leider etwa 10x langsamer als chartAt (0). Überzeugen
Stephen M Irving

Diese Lösung ist gut für ASCII, aber sie wird auf alle möglichen Arten kaputt gehen, sobald Sie mit mehr als dem fertig werden. "👍".charAt(0)gibt zurück "\ud83d", "café".charAt(3)gibt eden Akzent zurück und lässt ihn fallen usw. stackoverflow.com/questions/38345372/… hat einige Informationen und eine gute Alternative (benutze eine Bibliothek)
Clément

149

In JavaScript können Sie dies tun:

const x = 'some string';
console.log(x.substring(0, 1));


5
Wenn Sie lieber Sub-String-Funktionen verwenden, x.slice(0,1)ist der kürzer. Und um den letzten Char zu bekommen, benutze einfach:x.slice(-1)
S.Serpooshan

60

Sie können jede dieser verwenden.

Es gibt einen kleinen Unterschied zwischen all diesen. Seien Sie also vorsichtig, wenn Sie es in einer bedingten Anweisung verwenden.

var string = "hello world";
console.log(string.slice(0,1));     //o/p:- h
console.log(string.charAt(0));      //o/p:- h
console.log(string.substring(0,1)); //o/p:- h
console.log(string.substr(0,1));    //o/p:- h
console.log(string[0]);             //o/p:- h


var string = "";
console.log(string.slice(0,1));     //o/p:- (an empty string)
console.log(string.charAt(0));      //o/p:- (an empty string)
console.log(string.substring(0,1)); //o/p:- (an empty string)
console.log(string.substr(0,1));    //o/p:- (an empty string)
console.log(string[0]);             //o/p:- undefined

3
fehlende Zeichenfolge (0,1); :)
Luckylooke


18

Beispiel aller Methoden

Erstens :string.charAt(index)

Geben Sie den Caract am Index zurück index

var str = "Stack overflow";

console.log(str.charAt(0));

Zweitens :string.substring(start,length);

Geben Sie den Teilstring in der Zeichenfolge zurück, der am Index beginnt startund nach der Länge endetlength

Hier willst du nur das erste Caract also: start = 0undlength = 1

var str = "Stack overflow";

console.log(str.substring(0,1));

Alternative :string[index]

Eine Zeichenfolge ist eine Reihe von Karakten. So können Sie den ersten Caract wie die erste Zelle eines Arrays erhalten.

Geben Sie den Caract am Index indexder Zeichenfolge zurück

var str = "Stack overflow";

console.log(str[0]);


Das Timing eines einzelnen Vorgangs mit console.time () ist kein vernünftiger oder genauer Leistungstest. Natürlich gibt es keinen großen Unterschied zwischen ihnen, wenn Sie nur eine einzige Operation durchführen. Diese Methoden arbeiten tatsächlich anders.
Stephen M Irving

17
var x = "somestring"
alert(x.charAt(0));

Mit der Methode charAt () können Sie die Position des gewünschten Zeichens angeben.

Sie haben versucht, das Zeichen an die Position eines Arrays "x" zu bringen, das nicht definiert ist, da X kein Array ist.


15

Sie können sogar slicealle anderen Zeichen abschneiden:

x.slice(0, 1);

Diese Methode wird eine der am wenigsten leistungsfähigen Methoden zur Lösung dieses Problems sein. Suboptimal.
Stephen M Irving

7
var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);

Getestet in IE6 + , FF , Chrome , Safari .


12
Nur neugierig, gibt es einen Grund, warum Sie diese Antwort gepostet haben? Es scheint ein Duplikat der akzeptierten Antwort zu sein.
Manatherin

5
Sie gaben einige zusätzliche Informationen (auch wenn es ein Kommentar gewesen sein sollte) ... wie in welchen Browsern es getestet wurde. Ich weiß, indexOfdass es in IE8 nicht funktioniert und das ist mir ziemlich wichtig. Ich habe tatsächlich angefangen, die charAt-Kompatibilität zu googeln, bis ich diese Antwort hier unten sah.
gloomy.penguin


2

x.substring(0,1)

Einzelheiten

substring(start, end) extrahiert die Zeichen aus einer Zeichenfolge zwischen den beiden Indizes "Start" und "Ende", ohne "Ende" selbst.

Besondere Hinweise

  • Wenn "start" größer als "end" ist, tauscht diese Methode die beiden Argumente aus, dh str.substring (1, 4) == str.substring (4, 1).
  • Wenn entweder "Start" oder "Ende" kleiner als 0 ist, wird es so behandelt, als wäre es 0.

2

Sieht so aus, als wäre ich zu spät zur Party, aber probieren Sie die folgende Lösung aus, für die ich persönlich die beste gefunden habe:

var x = "testing sub string"
alert(x[0]);
alert(x[1]);

Die Ausgabe sollte eine Warnung mit den folgenden Werten anzeigen: "t" "e"


0

In JQuery können Sie Folgendes verwenden: in der Klasse für Select Option:

$('.className').each(function(){
    className.push($("option:selected",this).val().substr(1));
});

in der Klasse für Text Wert:

$('.className').each(function(){
    className.push($(this).val().substr(1));
});

in ID für Text Wert:

$("#id").val().substr(1)

0

In Nodejs können Sie Buffer verwenden:

let str = "hello world"
let buffer = Buffer.alloc(2, str) // replace 2 by 1 for the first char
console.log(buffer.toString('utf-8')) // display he
console.log(buffer.toString('utf-8').length) // display 2

0
var string  = "Hello World";
console.log(charAt(0));

Das Zeichen (0) ist eine JavaScript-Methode. Es gibt einen Wert basierend auf dem Index zurück. Hier ist 0 der Index für den ersten Buchstaben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.