Bagaimana cara mendapatkan karakter string pertama?

595

Saya memiliki string, dan saya perlu mendapatkan karakter pertamanya.

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

Bagaimana saya bisa memperbaiki kode saya?

Simon
sumber
5
hanya hati-hati - Anda mungkin tidak memiliki karakter di sana untuk mengekstrak!
corsiKa

Jawaban:

1046

Yang Anda inginkan adalah charAt.

var x = 'some string';
alert(x.charAt(0)); // alerts 's'
Daniel Vandersluis
sumber
11
Bekerja pada IE7, Chrome, Firefox.
Yuriy Faktorovich
78
Hanya ingin meninggalkan dokumen MDN di sini. Saya biasanya lebih suka ini daripada w3schools.
danwit
12
x.charAt()juga akan mengembalikan karakter pertama seolah-olah tidak ada indeks yang diteruskan ke metode ini, itu akan menganggapnya ke 0.
Mohammad Usman
1
@MohammadUsman Sementara apa yang Anda katakan itu benar, sayangnya charAt () tanpa parameter sebenarnya berjalan sekitar 10x lebih lambat daripada chartAt (0) di Firefox pada Firefox 71. Lihat sendiri di sini: jsperf.com/testing-the-first-character- in-a-string / 1
Stephen M Irving
Solusi ini baik untuk ASCII, tetapi akan pecah dalam segala macam cara segera setelah Anda berurusan dengan lebih dari itu. "👍".charAt(0)pengembalian "\ud83d", "café".charAt(3)pengembalian edan tetes aksen, dll stackoverflow.com/questions/38345372/... memiliki beberapa info dan baik alternatif (menggunakan perpustakaan)
Clément
149

Di JavaScript Anda bisa melakukan ini:

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

Dustin Laine
sumber
5
jika lebih suka menggunakan fungsi sub-string, x.slice(0,1)ini lebih pendek. Dan untuk mendapatkan karakter terakhir cukup gunakan:x.slice(-1)
S.Serpooshan
60

Anda dapat menggunakan semua ini.

Ada sedikit perbedaan antara semua ini Jadi berhati-hatilah saat menggunakannya dalam pernyataan bersyarat.

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
sumber
3
string.substr yang hilang (0,1); :)
Luckylooke
28

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

ŁukaszW.pl
sumber
11
substring sekitar 90% lebih lambat karena karakter dapat melihat jsperf
moritzw
18

Contoh semua metode

Pertama :string.charAt(index)

Kembalikan caract di indeks index

var str = "Stack overflow";

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

Kedua :string.substring(start,length);

Kembalikan substring dalam string yang mulai pada indeks startdan berhenti setelah panjangnyalength

Di sini Anda hanya menginginkan caract pertama: start = 0danlength = 1

var str = "Stack overflow";

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

Alternatif :string[index]

String adalah array caract. Jadi Anda bisa mendapatkan caract pertama seperti sel pertama array.

Kembalikan caract pada indeks indexstring

var str = "Stack overflow";

console.log(str[0]);

Alexis
sumber
Pengaturan waktu satu operasi menggunakan console.time () bukan tes kinerja yang masuk akal atau akurat. TENTU SAJA tidak ada perbedaan besar di antara mereka ketika Anda hanya mengatur waktu satu operasi. Metode-metode ini benar-benar berkinerja berbeda.
Stephen M Irving
17
var x = "somestring"
alert(x.charAt(0));

Metode charAt () memungkinkan Anda menentukan posisi karakter yang Anda inginkan.

Apa yang Anda coba lakukan adalah mendapatkan karakter pada posisi array "x", yang tidak didefinisikan sebagai X bukan array.

Eton B.
sumber
15

Anda bahkan dapat menggunakan sliceuntuk memotong semua karakter lain:

x.slice(0, 1);
yaart
sumber
Metode ini akan menjadi salah satu metode yang paling sedikit performan dalam menyelesaikan masalah ini. Kurang optimal.
Stephen M Irving
7
var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);

Diuji dalam IE6 + , FF , Chrome , safari .

Swathi
sumber
12
hanya ingin tahu, apakah ada alasan Anda memposting jawaban ini? Tampaknya merupakan duplikat dari jawaban yang diterima.
Manatherin
5
Mereka memang memberikan beberapa info tambahan (bahkan jika itu seharusnya komentar) ... seperti apa browser itu diuji. Saya tahu indexOftidak bekerja di IE8 dan itu agak penting bagi saya. Saya sebenarnya mulai kompatibilitas google charAt sampai saya melihat jawaban ini di sini.
gloomy.penguin
6

Coba ini juga:

x.substr(0, 1);
AmazingDayToday
sumber
Substr () dianggap sebagai fungsi warisan dan harus dihindari jika memungkinkan. Ini sebenarnya bukan bagian dari bahasa JS dan dapat dihapus kapan saja. Jauhi penggunaan substr () di semua kode baru dan kode lama harus dire-refored untuk menggunakan metode lain. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Stephen M Irving
2

x.substring(0,1)

Detail

substring(start, end) mengekstrak karakter dari string, antara 2 indeks "mulai" dan "akhir", tidak termasuk "akhir" itu sendiri.

Catatan khusus

  • Jika "mulai" lebih besar dari "akhir", metode ini akan menukar dua argumen, yang berarti str.substring (1, 4) == str.substring (4, 1).
  • Jika "awal" atau "akhir" kurang dari 0, itu diperlakukan seolah-olah 0.
edelans
sumber
2

Sepertinya saya terlambat ke pesta, tetapi coba solusi di bawah ini yang secara pribadi saya temukan solusi terbaik:

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

Output harus menunjukkan peringatan dengan nilai-nilai di bawah ini: "t" "e"

Dilip
sumber
0

di JQuery Anda dapat menggunakan: di kelas untuk Select Option:

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

di kelas untuk Nilai teks:

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

dalam ID untuk Nilai teks:

$("#id").val().substr(1)
Amranur Rahman
sumber
0

di Nodejs Anda dapat menggunakan Buffer:

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
sumber
0
var string  = "Hello World";
console.log(charAt(0));

Karakter (0) adalah metode JavaScript, Ini akan mengembalikan nilai berdasarkan indeks, di sini 0 adalah indeks untuk huruf pertama.

Sreehari Ballampalli
sumber