Jak zdobyć pierwszy znak ciągu?

595

Mam ciąg i muszę zdobyć jego pierwszą postać.

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

Jak mogę naprawić swój kod?

Szymon
źródło
5
tylko uważaj - możesz nie mieć postaci do wyodrębnienia!
corsiKa,

Odpowiedzi:

1045

To czego chcesz charAt.

var x = 'some string';
alert(x.charAt(0)); // alerts 's'
Daniel Vandersluis
źródło
11
Pracował na IE7, Chrome, Firefox.
Jurij Faktorowicz
78
Chciałem tylko zostawić dokument MDN tutaj. Ogólnie wolę to niż w3schools.
danwit
12
x.charAt()zwróci również pierwszy znak, jak gdyby żaden indeks nie został przekazany do tej metody, przyjmie go do 0.
Mohammad Usman
1
@MohammadUsman Chociaż to, co mówisz, jest prawdą, niestety charAt () bez żadnych parametrów w rzeczywistości działa około 10 razy wolniej niż chartAt (0) w Firefoksie od Firefoksa 71. Przekonaj
Stephen M Irving
To rozwiązanie jest dobre dla ASCII, ale zepsuje się na różne sposoby, gdy tylko zajmiesz się czymś więcej. "👍".charAt(0)zwraca "\ud83d", "café".charAt(3)zwraca ei upuszcza akcent itp. stackoverflow.com/questions/38345372/... ma pewne informacje i dobrą alternatywę (skorzystaj z biblioteki)
Clément
149

W JavaScript możesz to zrobić:

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

Dustin Laine
źródło
5
jeśli wolisz używać podciągów, x.slice(0,1)jest on krótszy. Aby uzyskać ostatni znak, użyj:x.slice(-1)
S.Serpooshan
60

Możesz użyć dowolnego z nich.

Istnieje niewielka różnica między nimi wszystkimi. Dlatego zachowaj ostrożność, używając go w instrukcji warunkowej.

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
źródło
3
brakujący ciąg.substr (0,1); :)
Luckylooke
28

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

ŁukaszW.pl
źródło
11
substring jest o około 90% wolniejszy niż charAt patrz jsperf
moritzw
18

Przykład wszystkich metod

Po pierwsze :string.charAt(index)

Zwróć caract według indeksu index

var str = "Stack overflow";

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

Po drugie :string.substring(start,length);

Zwraca podciąg w ciągu, który zaczyna się od indeksu, starta kończy po długościlength

Tutaj chcesz tylko pierwszy caract, więc: start = 0ilength = 1

var str = "Stack overflow";

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

Alternatywa :string[index]

Sznurek to tablica caract. Możesz więc zdobyć pierwszy caract jak pierwszą komórkę tablicy.

Zwróć caract na indeks indexłańcucha

var str = "Stack overflow";

console.log(str[0]);

Alexis
źródło
Pomiar czasu pojedynczej operacji za pomocą console.time () nie jest rozsądnym ani dokładnym testem wydajności. Oczywiście, nie ma dużej różnicy między nimi, gdy wykonujesz tylko jedną operację. Te metody faktycznie działają inaczej.
Stephen M Irving
17
var x = "somestring"
alert(x.charAt(0));

Metoda charAt () pozwala określić pozycję żądanego znaku.

To, co próbujesz zrobić, to uzyskać znak w pozycji tablicy „x”, która nie jest zdefiniowana, ponieważ X nie jest tablicą.

Eton B.
źródło
15

Możesz nawet użyć slicedo odcięcia wszystkich innych postaci:

x.slice(0, 1);
yckart
źródło
Ta metoda będzie jedną z najmniej wydajnych metod rozwiązania tego problemu. Suboptymalne.
Stephen M Irving,
7
var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);

Testowane w IE6 + , FF , Chrome , safari .

Swathi
źródło
12
tylko ciekawe, czy istnieje powód, dla którego opublikowałeś tę odpowiedź? Wydaje się, że jest to kopia przyjętej odpowiedzi.
Manatherin,
5
Podali dodatkowe informacje (nawet jeśli powinien to być komentarz) ... na przykład w jakich przeglądarkach był testowany. Wiem, indexOfże nie działa w IE8 i jest to dla mnie bardzo ważne. Właściwie zacząłem używać google kompatybilności, dopóki nie zobaczyłem tej odpowiedzi tutaj.
gloomy.penguin
6

Spróbuj również:

x.substr(0, 1);
AmazingDayToday
źródło
substr () jest uważany za funkcję starszego typu i należy go unikać, jeśli to w ogóle możliwe. W rzeczywistości nie jest częścią języka JS i może zostać usunięty w dowolnym momencie. Unikaj używania substr () w nowym kodzie, a stary kod powinien zostać zrefaktoryzowany, aby mógł używać innych metod. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Stephen M Irving
2

x.substring(0,1)

Detale

substring(start, end) wyodrębnia znaki z ciągu między dwoma indeksami „początek” i „koniec”, nie uwzględniając samego „końca”.

Specjalne notatki

  • Jeśli „start” jest większy niż „koniec”, ta metoda zamieni dwa argumenty, co oznacza str. Podciąg (1, 4) == str. Podciąg (4, 1).
  • Jeśli „początek” lub „koniec” jest mniejszy niż 0, to jest traktowane tak, jakby to było 0.
edelany
źródło
2

Wygląda na to, że jestem spóźniony na imprezę, ale wypróbuj poniższe rozwiązanie, które osobiście znalazłem najlepsze rozwiązanie:

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

Wyjście powinno pokazywać alert z poniższymi wartościami: „t” „e”

Dilip
źródło
0

w JQuery możesz użyć: w klasie dla Wybierz opcję:

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

w klasie dla tekstu Wartość:

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

w ID dla tekstu Wartość:

$("#id").val().substr(1)
Amranur Rahman
źródło
0

w Nodejs możesz użyć Bufora:

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
źródło
0
var string  = "Hello World";
console.log(charAt(0));

CharAt (0) jest metodą JavaScript, zwróci wartość na podstawie indeksu, tutaj 0 to indeks pierwszej litery.

Sreehari Ballampalli
źródło