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?


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'

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));


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

3
brakujący ciąg.substr (0,1); :)
Luckylooke


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]);


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ą.


15

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

x.slice(0, 1);

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 .


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


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.

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”


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)

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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.