Làm thế nào để có được ký tự đầu tiên của chuỗi?


595

Tôi có một chuỗi, và tôi cần có được ký tự đầu tiên của nó.

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

Làm thế nào tôi có thể sửa mã của tôi?


5
chỉ cần cẩn thận - bạn có thể không có một nhân vật ở đó để giải nén!
corsiKa

Câu trả lời:


1046

Những gì bạn muốn là charAt.

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

11
Đã hoạt động trên IE7, Chrome, Firefox.
Yuriy Faktorovich

78
Chỉ muốn để lại tài liệu MDN ở đây. Tôi thường thích điều này hơn w3schools.
danwit

12
x.charAt()cũng sẽ trả về ký tự đầu tiên như thể không có chỉ mục nào được truyền cho phương thức này, nó sẽ giả sử nó cho 0.
Mohammad Usman

1
@MohammadUsman Mặc dù những gì bạn nói là đúng, nhưng thật không may, charAt () không có bất kỳ tham số nào thực sự chạy chậm hơn khoảng 10 lần so với chartAt (0) trong Firefox kể từ Firefox 71. Xem cho chính bạn tại đây: jsperf.com/testing-the-first-character- trong chuỗi / 1
Stephen M Irving

Giải pháp này tốt cho ASCII, nhưng nó sẽ phá vỡ mọi cách ngay khi bạn giải quyết nhiều hơn thế. "👍".charAt(0)lợi nhuận "\ud83d", "café".charAt(3)lợi nhuận evà giảm các giọng vv stackoverflow.com/questions/38345372/... có một số thông tin và một lựa chọn tốt (sử dụng một thư viện)
Clément

149

Trong JavaScript, bạn có thể làm điều này:

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


5
nếu thích sử dụng funcs chuỗi con, x.slice(0,1)thì ngắn hơn. Và để có được char cuối cùng, chỉ cần sử dụng:x.slice(-1)
S.Serpooshan

60

Bạn có thể sử dụng bất kỳ trong số này.

Có một chút khác biệt giữa tất cả những điều này Vì vậy, hãy cẩn thận trong khi sử dụng nó trong tuyên bố có điều kiện.

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
thiếu chuỗi.substr (0,1); :)
Luckylooke


18

Ví dụ về tất cả các phương thức

Đầu tiên :string.charAt(index)

Trả lại caract tại chỉ mục index

var str = "Stack overflow";

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

Thứ hai :string.substring(start,length);

Trả về chuỗi con trong chuỗi bắt đầu tại chỉ mục startvà dừng sau độ dàilength

Ở đây bạn chỉ muốn chiếc xe đầu tiên như vậy: start = 0length = 1

var str = "Stack overflow";

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

Thay thế :string[index]

Một chuỗi là một mảng của caract. Vì vậy, bạn có thể có được caract đầu tiên như ô đầu tiên của một mảng.

Trả về caract tại chỉ mục indexcủa chuỗi

var str = "Stack overflow";

console.log(str[0]);


Thời gian cho một hoạt động bằng cách sử dụng console.time () không phải là một thử nghiệm hợp lý hoặc chính xác về hiệu suất. KHÓA HỌC không có sự khác biệt lớn giữa chúng khi bạn chỉ thực hiện một thao tác duy nhất. Những phương pháp này thực sự thực hiện khác nhau.
Stephen M Irving

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

Phương thức charAt () cho phép bạn chỉ định vị trí của ký tự bạn muốn.

Những gì bạn đã cố gắng làm là lấy ký tự ở vị trí của một mảng "x", không được định nghĩa là X không phải là một mảng.


15

Bạn thậm chí có thể sử dụng sliceđể cắt bỏ tất cả các ký tự khác:

x.slice(0, 1);

Phương pháp này sẽ là một trong những phương pháp ít hiệu quả nhất để giải quyết điều này. Tối ưu phụ.
Stephen M Irving

7
var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);

Đã thử nghiệm trong IE6 + , FF , Chrome , safari .


12
chỉ tò mò, có một lý do bạn đăng câu trả lời này? Nó dường như là một bản sao của câu trả lời được chấp nhận.
Manatherin

5
Họ đã cung cấp thêm một số thông tin (ngay cả khi đó là một bình luận) ... giống như những trình duyệt mà nó đã được thử nghiệm. Tôi biết indexOfnó không hoạt động trong IE8 và điều đó khá quan trọng đối với tôi. Tôi thực sự bắt đầu tương thích google charAt cho đến khi tôi thấy câu trả lời này ở đây.
ảm đạm.penguin

6

Hãy thử điều này là tốt:

x.substr(0, 1);

chất nền () được coi là một chức năng kế thừa và nên tránh nếu có thể. Nó không thực sự là một phần của ngôn ngữ JS và có thể bị xóa bất cứ lúc nào. Tránh xa việc sử dụng chất nền () trong tất cả các mã mới và mã cũ nên được cấu trúc lại để sử dụng các phương thức khác. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/
Khăn

2

x.substring(0,1)

Chi tiết

substring(start, end) trích xuất các ký tự từ một chuỗi, giữa 2 chỉ số "bắt đầu" và "kết thúc", không bao gồm chính "kết thúc".

Ghi chú đặc biệt

  • Nếu "bắt đầu" lớn hơn "kết thúc", phương thức này sẽ hoán đổi hai đối số, nghĩa là str.sub chuỗi (1, 4) == str.sub chuỗi (4, 1).
  • Nếu "bắt đầu" hoặc "kết thúc" nhỏ hơn 0, thì nó được coi như là 0.

2

Có vẻ như tôi đến bữa tiệc muộn, nhưng hãy thử giải pháp dưới đây mà cá nhân tôi tìm thấy giải pháp tốt nhất:

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

Đầu ra sẽ hiển thị cảnh báo với các giá trị dưới đây: "t" "e"


0

trong JQuery, bạn có thể sử dụng: trong lớp cho Chọn Tùy chọn:

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

trong lớp cho văn bản Giá trị:

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

trong ID cho giá trị văn bản:

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

0

trong Nodejs bạn có thể sử dụng Bộ đệm:

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) là phương thức JavaScript, Nó sẽ trả về giá trị dựa trên chỉ mục, ở đây 0 là chỉ mục cho chữ cái đầu tiên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.