วิธีรับอักขระตัวแรกของสตริง


595

ฉันมีสตริงและฉันต้องได้ตัวละครตัวแรก

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

ฉันจะแก้ไขรหัสของฉันได้อย่างไร


5
ระวังให้ดี - คุณอาจไม่มีตัวละครที่จะสกัดออกมา!
corsiKa

คำตอบ:


1045

charAtสิ่งที่คุณต้องการคือ

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

11
ทำงานบน IE7, Chrome, Firefox
Yuriy Faktorovich

78
แค่ต้องการออกจากMDN docที่นี่ ฉันชอบสิ่งนี้มากกว่า w3schools
danwit

12
x.charAt()0นอกจากนี้ยังจะกลับตัวอักษรตัวแรกเป็นถ้าไม่มีดัชนีจะส่งผ่านไปยังวิธีการนี้ก็จะถือว่ามันไป
Mohammad Usman

1
@MohammadUsman ในขณะที่สิ่งที่คุณพูดนั้นเป็นความจริง แต่น่าเสียดายที่ charAt () โดยไม่มีพารามิเตอร์ใด ๆ จะทำงานช้าลงประมาณ 10 เท่ากว่า chartAt (0) ใน Firefox ตั้งแต่ Firefox 71 ดูตัวคุณเองที่นี่: jsperf.com/testing-the-first-character- ใน a-string / 1
Stephen M Irving

วิธีนี้เป็นวิธีที่ดีสำหรับ ASCII แต่มันจะแตกในทุกประเภททันทีที่คุณจัดการกับสิ่งนั้น "👍".charAt(0)ผลตอบแทน"\ud83d", "café".charAt(3)ผลตอบแทนeและลดลงสำเนียง ฯลฯstackoverflow.com/questions/38345372/...มีข้อมูลบางอย่างและทางเลือกที่ดี (ใช้ห้องสมุด)
Clément

149

ใน JavaScript คุณสามารถทำสิ่งนี้:

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


5
หากต้องการใช้ funcs ย่อยสตริงx.slice(0,1)จะสั้นกว่า และเพื่อให้ได้ถ่านตัวสุดท้ายใช้:x.slice(-1)
S. Serpooshan

60

คุณสามารถใช้สิ่งเหล่านี้

มีความแตกต่างเล็กน้อยระหว่างสิ่งเหล่านี้ดังนั้นโปรดใช้ความระมัดระวังในการใช้คำสั่งแบบมีเงื่อนไข

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


18

ตัวอย่างของวิธีการทั้งหมด

ครั้งแรก :string.charAt(index)

ส่งคืน caract ที่ดัชนี index

var str = "Stack overflow";

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

ที่สอง :string.substring(start,length);

ส่งคืนสตริงย่อยในสตริงที่เริ่มต้นที่ดัชนีstartและหยุดหลังจากความยาวlength

ที่นี่คุณเพียงต้องการ caract แรกดังนั้น: start = 0และlength = 1

var str = "Stack overflow";

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

ทางเลือก :string[index]

สตริงเป็นอาร์เรย์ของ caract ดังนั้นคุณสามารถรับ caract แรกเหมือนเซลล์แรกของอาร์เรย์

ส่งคืน caract ที่ดัชนีindexของสตริง

var str = "Stack overflow";

console.log(str[0]);


การจับเวลาการดำเนินการครั้งเดียวโดยใช้ console.time () ไม่ใช่การทดสอบประสิทธิภาพที่สมเหตุสมผลหรือถูกต้อง แน่นอนว่าไม่มีความแตกต่างระหว่างพวกเขาเมื่อคุณเพียงครั้งเดียวการดำเนินการเดียว วิธีการเหล่านี้จะทำงานแตกต่างกันจริง
Stephen M Irving

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

วิธี charAt () ช่วยให้คุณสามารถระบุตำแหน่งของตัวละครที่คุณต้องการ

สิ่งที่คุณพยายามทำคือรับตัวอักษรที่ตำแหน่งของอาร์เรย์ "x" ซึ่งไม่ได้กำหนดไว้เนื่องจาก X ไม่ใช่อาร์เรย์


15

คุณสามารถใช้sliceเพื่อตัดตัวอักษรอื่น ๆ ทั้งหมด:

x.slice(0, 1);

วิธีนี้จะเป็นหนึ่งในวิธีที่มีประสิทธิภาพน้อยที่สุดในการแก้ปัญหานี้ ย่อยที่ดีที่สุด
Stephen M Irving

7
var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);

การทดสอบในIE6 + , FF , Chrome , Safari


12
แค่อยากรู้อยากเห็นมีเหตุผลที่คุณโพสต์คำตอบนี้หรือไม่? ดูเหมือนจะเป็นคำตอบที่ซ้ำกัน
Manatherin

5
พวกเขาให้ข้อมูลเพิ่มเติมบางอย่าง (แม้ว่ามันควรจะเป็นความคิดเห็น) ... เหมือนเบราว์เซอร์ที่ได้รับการทดสอบฉันรู้ว่าindexOfใช้งานไม่ได้ใน IE8 และนั่นค่อนข้างสำคัญสำหรับฉัน ที่จริงฉันเริ่มเข้ากันได้กับ google charAt จนกระทั่งฉันเห็นคำตอบนี้ลงไปที่นี่
gloomy.penguin

6

ลองสิ่งนี้เช่นกัน:

x.substr(0, 1);

substr () ถือเป็นฟังก์ชั่นดั้งเดิมและควรหลีกเลี่ยงหากเป็นไปได้ มันไม่ได้เป็นส่วนหนึ่งของภาษา JS และสามารถลบได้ตลอดเวลา อยู่ห่างจากการใช้ substr () ในรหัสใหม่และรหัสเก่าทั้งหมดควรได้รับการปรับโครงสร้างใหม่เพื่อใช้วิธีการอื่น developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/
Stephen M Irving

2

x.substring(0,1)

รายละเอียด

substring(start, end) แยกอักขระจากสตริงระหว่างดัชนีทั้งสอง "เริ่มต้น" และ "สิ้นสุด" ไม่รวมถึง "สิ้นสุด" ตัวเอง

หมายเหตุพิเศษ

  • หาก "start" มากกว่า "end" วิธีนี้จะสลับสองอาร์กิวเมนต์หมายถึง str.substring (1, 4) == str.substring (4, 1)
  • หาก "start" หรือ "end" น้อยกว่า 0 จะถือว่าเป็นถ้าเป็น 0

2

ดูเหมือนว่าฉันจะไปงานปาร์ตี้ช้า แต่ลองใช้วิธีแก้ปัญหาด้านล่างซึ่งฉันพบวิธีแก้ปัญหาที่ดีที่สุด:

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

ผลลัพธ์ควรแสดงการแจ้งเตือนด้วยค่าด้านล่าง: "t" "e"


0

ใน JQuery คุณสามารถใช้: ในชั้นเรียนสำหรับตัวเลือกที่เลือก:

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

ในชั้นเรียนสำหรับค่าข้อความ:

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

ใน ID สำหรับค่าข้อความ:

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

0

ใน Nodejs คุณสามารถใช้ 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));

charAt (0) เป็นวิธี JavaScript มันจะคืนค่าตามดัชนีที่นี่ 0 เป็นดัชนีสำหรับตัวอักษรตัวแรก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.