Dizenin ilk karakterini nasıl alabilirim?


595

Bir dizem var ve ilk karakterini almam gerekiyor.

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

Kodumu nasıl düzeltebilirim?


5
sadece dikkatli olun - orada ayıklanacak bir karakteriniz olmayabilir!
corsiKa

Yanıtlar:


1045

Ne istiyorsun charAt.

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

11
IE7, Chrome, Firefox üzerinde çalıştı.
Yuriy Faktorovich

78
MDN belgesini burada bırakmak istedim . Bunu genelde w3schools'a tercih ederim.
danwit

12
x.charAt()ilk karakteri de bu yönteme herhangi bir dizin geçirilmemiş gibi geri döndürür 0.
Mohammad Usman

1
@MohammadUsman ne demek, doğru olmakla birlikte ne yazık ki aslında burada kendiniz için yavaş Firefox'ta chartAt (0) daha Firefox 71. See olarak 10x hakkında çalışır herhangi bir parametre olmadan charAt (): jsperf.com/testing-the-first-character- dize / 1
Stephen M Irving

Bu çözüm ASCII için iyidir, ancak bundan daha fazlasını ele alır almaz her türlü şekilde kırılacaktır. aksanı "👍".charAt(0)döndürür "\ud83d", "café".charAt(3)döndürür eve bırakır vb. stackoverflow.com/questions/38345372/… bazı bilgileri ve iyi bir alternatifi vardır (kütüphane kullanın)
Clément

149

JavaScript'te şunları yapabilirsiniz:

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


5
alt dize işlevlerini kullanmayı tercih ederseniz, x.slice(0,1)daha kısadır. Ve son char almak için sadece kullanın:x.slice(-1)
S.Serpooshan

60

Bunlardan herhangi birini kullanabilirsiniz.

Tüm bunlar arasında küçük bir fark var Bu yüzden koşullu ifadede kullanırken dikkatli olun.

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
dize eksik. substr (0,1); :)
Luckylooke


18

Tüm yönteme örnek

İlk olarak :string.charAt(index)

Karakteri dizinden döndür index

var str = "Stack overflow";

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

İkincisi :string.substring(start,length);

Dizeden başlayan startve uzunluktan sonra duran dizgideki alt dizeyi döndürlength

Burada sadece ilk karakterin olmasını istiyorsunuz: start = 0velength = 1

var str = "Stack overflow";

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

Alternatif :string[index]

Dize, bir dizi karattır. Böylece bir dizinin ilk hücresi gibi ilk karakterini elde edebilirsiniz.

Endeksinde Caract İade indexdize

var str = "Stack overflow";

console.log(str[0]);


Console.time () kullanarak tek bir işlemi zamanlamak, makul veya doğru bir performans testi değildir. DERS arasında sadece tek bir işlem yaptığınızda aralarında büyük bir fark yoktur. Bu yöntemler aslında farklı performans gösterir.
Stephen M Irving

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

CharAt () yöntemi, istediğiniz karakterin konumunu belirlemenizi sağlar.

Yapmaya çalıştığınız şey, X'in bir dizi olmadığı şeklinde tanımlanmayan karakteri "x" dizisinin konumuna getirmektir.


15

sliceDiğer tüm karakterleri kesmek için bile kullanabilirsiniz :

x.slice(0, 1);

Bu yöntem, bunu çözmenin en az performans gösteren yöntemlerinden biri olacaktır. Standart altı.
Stephen M Irving

7
var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);

Test edilmiştir IE6 + , FF , Chrome , Safari .


12
sadece merak ediyorum, bu cevabı göndermenin bir nedeni var mı? Kabul edilen cevabın bir kopyası gibi görünüyor.
Manatherin

5
Bazı ekstra bilgi verdiler (bir yorum olsa bile) ... test edildi hangi tarayıcılar gibi. Bildiğim indexOfIE8 çalışmıyor ve bu benim için oldukça önemli. Aslında bu cevabı burada görene kadar google charAt uyumluluğuna başladım.
gloomy.penguin


2

x.substring(0,1)

ayrıntılar

substring(start, end)"end" ifadesini içermeyen 2 "end" ve "end" endeksleri arasındaki karakterleri bir dizeden ayıklar .

Özel notlar

  • "Start", "end" den büyükse, bu yöntem iki argümanı değiştirir, yani str.substring (1, 4) == str.substring (4, 1).
  • "Başlangıç" veya "bitiş" 0'dan küçükse, 0mış gibi davranılır.

2

Partiye geç kaldım ama şahsen en iyi çözümü bulduğum aşağıdaki çözümü deneyin:

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

Çıktıda aşağıdaki değerlerle uyarı gösterilmelidir: "t" "e"


0

JQuery'de şunları kullanabilirsiniz: Seçeneği Seçmek için sınıfta:

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

metin değeri için sınıfta:

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

Metin Değeri için Kimlik'te:

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

0

Nodejs'de Tampon kullanabilirsiniz:

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) JavaScript yöntemidir, dizine göre değer döndürür, burada 0 ilk harfin dizinidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.