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?


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'

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


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

3
string.substr yang hilang (0,1); :)
Luckylooke


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


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.


15

Anda bahkan dapat menggunakan sliceuntuk memotong semua karakter lain:

x.slice(0, 1);

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 .


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


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.

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"


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)

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

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.