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?

Simon
quelle
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'
Daniel Vandersluis
quelle
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));

Dustin Laine
quelle
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
Shailesh Sonare
quelle
3
fehlende Zeichenfolge (0,1); :)
Luckylooke
28

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

ŁukaszW.pl
quelle
11
Teilzeichenfolge ist etwa 90% langsamer als charAt siehe jsperf
moritzw
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]);

Alexis
quelle
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.

Eton B.
quelle
15

Sie können sogar slicealle anderen Zeichen abschneiden:

x.slice(0, 1);
yckart
quelle
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 .

Swathi
quelle
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
6

Versuchen Sie dies auch:

x.substr(0, 1);
AmazingDayToday
quelle
substr () wird als Legacy-Funktion betrachtet und sollte nach Möglichkeit vermieden werden. Es ist eigentlich kein Teil der JS-Sprache und kann jederzeit entfernt werden. Vermeiden Sie die Verwendung von substr () in allen neuen Codes, und alte Codes sollten überarbeitet werden, um andere Methoden zu verwenden. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Stephen M Irving
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.
edelans
quelle
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"

Dilip
quelle
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)
Amranur Rahman
quelle
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
Sylvain Joly
quelle
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.

Sreehari Ballampalli
quelle