วิธีเลือกอักขระสองตัวสุดท้ายของสตริง


194

ฉันต้องเลือกอักขระสองตัวสุดท้ายจากตัวแปรไม่ว่าจะเป็นตัวเลขหรือตัวอักษร

ตัวอย่างเช่น:

var member = "my name is Mate";

ฉันต้องการแสดงตัวอักษรสองตัวสุดท้ายจากสตริงในmemberตัวแปร

คำตอบ:



23

substringลองนี้ทราบว่าคุณไม่จำเป็นต้องระบุดัชนีสิ้นใน

var characters = member.substr(member.length -2);

คำตอบดั้งเดิมของคุณอาจเหมาะสมกว่า ตามMDN ของsubstrเอกสาร , "ไมโครซอฟท์ JScript ไม่สนับสนุนค่าลบสำหรับดัชนีเริ่มต้น."

23

แก้ไข: 2020: ใช้string.slice(-2)ตามที่คนอื่นพูด - ดูด้านล่าง

ตอนนี้ 2016 string.substr(-2)ควรทำเคล็ดลับ (ไม่substring (!))

นำมาจาก MDN

วากยสัมพันธ์

str.substr(start[, length])

พารามิเตอร์

เริ่มต้น

ตำแหน่งที่จะเริ่มต้นแยกอักขระ หากกำหนดจำนวนลบจะถือว่าเป็น strLength + startโดยที่ strLength คือความยาวของสตริง (ตัวอย่างเช่นถ้า start เป็น -3 จะถือว่าเป็น strLength - 3) จำนวนของอักขระที่ต้องการแตก

แก้ไข 2563

MDN กล่าว

คำเตือน: แม้ว่า String.prototype.substr (…) จะไม่คัดค้านอย่างเคร่งครัด (เช่นเดียวกับ "ลบออกจากมาตรฐานเว็บ") แต่ก็ถือว่าเป็นฟังก์ชั่นดั้งเดิมและควรหลีกเลี่ยงเมื่อทำได้ มันไม่ได้เป็นส่วนหนึ่งของภาษาจาวาสคริปต์หลักและอาจถูกลบออกในอนาคต


1
"JScript ของ Microsoft ไม่สนับสนุนค่าลบสำหรับดัชนีเริ่มต้นหากต้องการใช้คุณลักษณะนี้ใน JScript คุณสามารถใช้รหัสต่อไปนี้ ... " - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ ...... (ในขณะที่ฝานพวกเขาไม่มี polyfill ใด ๆ : developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/
......

โปรดทราบว่า JScript ไม่ได้อยู่ในเบราว์เซอร์เป็นภาษาสคริปต์สำหรับการทำงานกับการทำงานอัตโนมัติของ Windows Script Host เป็นหลัก (คล้ายกับ VBScript) ดังนั้นจึงเป็นเหตุผลว่า ณ เวลานั้นไม่ได้รวมวิธีการดังกล่าวรุ่น Windows รุ่นใหม่จะส่งเสริม PowerShell ไวยากรณ์ที่คลุมเครือ อย่างไรก็ตามความคิดเห็นเกี่ยวกับชิ้นเป็นผู้สมัครที่ดีกว่าสารตั้งต้นในกรณีของ JScript เพราะมันรองรับดัชนีเชิงลบdocs.microsoft.com/en-us/previous-versions/windows/ …
จอร์จ Birbilis

9

ตัวอย่างต่อไปนี้ใช้slice()กับดัชนีเชิงลบ

var str = 'my name is maanu.';
console.log(str.slice(-3));     // returns 'nu.' last two
console.log(str.slice(3, -7)); // returns 'name is'
console.log(str.slice(0, -1));  // returns 'my name is maanu'


5

คุณสามารถลอง

member.substr(member.length-2);

คุณพลาด Member.length จากดัชนีเริ่มต้นของคุณ :)
mattytommo

อ่าฉันได้อัปเดตคำตอบของฉันเพื่อไตร่ตรองแล้วขอบคุณ TJ และ Ibu :)
mattytommo

1
@TJCrowder: ค่อนข้างแน่ใจว่าดัชนีลบในฐานะตำแหน่งเริ่มต้นใช้งานไม่ได้กับ IE8 และต่ำกว่า

1
@amnotiam: ขอบคุณมากดีที่รู้! ฉันเพิ่งทดสอบและแน่นอนไม่ทำงานบน IE7 หรือ IE8 (และดังนั้นคงไม่ทำงานบน IE6) IE9 ในโหมดมาตรฐานนั้นใช้ได้ (แต่ไม่รองรับ) ฉันไม่เคยใช้substrและตอนนี้ฉันหวังว่าฉันสามารถหากระทู้ที่บางคนพอใจในตัวเองทำให้ฉันลำบากสำหรับการที่ (และโดยเฉพาะอย่างยิ่งไม่ได้ใช้ดัชนีเชิงลบ) - ตอนนี้ฉันสามารถพิสูจน์ได้! :-)
TJ Crowder


2

คุณควรใช้สตริงย่อยไม่ใช่ jQuery เพื่อทำสิ่งนี้

ลองสิ่งนี้:

member.substring(member.length - 2, member.length)

W3Schools (ไม่ใช่เป็นทางการ แต่มีประโยชน์เป็นครั้งคราว): http://www.w3schools.com/jsref/jsref_substring.asp

การเพิ่มลิงค์ MDN ตามที่ร้องขอโดย commenter: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring


3
โปรดระบุลิงก์ไปยังเอกสารอย่างเป็นทางการเช่น MSDN หรือ MDN ไม่ใช่ w3fools :)
jbabey

w3schools ไม่ใช่ "เป็นทางการ" แต่โดยทั่วไปมีข้อมูลที่เชื่อถือได้ MSDN อย่างเป็นทางการ แต่ IE ที่เฉพาะเจาะจงและไม่ได้มีอะไรจะทำอย่างไรกับ Firefox, Safari, ฯลฯ
แมตต์

เพิ่มลิงก์ไปยังความคิดเห็นเมื่อคุณโพสต์สิ่งนี้
Matt

1
var member = "my name is maanu";

var answer=member.substring(0,member.length - 2);

alert(answer);

1
รหัสทำอะไร โปรดเขียนคำอธิบายถึงสิ่งที่เกิดขึ้น
DNKROZ

3
เพื่อความเป็นธรรมคำถามนี้เจาะจงมากเกี่ยวกับสิ่งที่รหัสต้องทำดังนั้นคำตอบที่ประกอบด้วย (ในสาระสำคัญ) โค้ดหนึ่งบรรทัดนั้นค่อนข้างอธิบายด้วยตนเอง
anaximander

1
รหัสออกจะเป็น 'nu' รับ 2 charecter ล่าสุดจากคำพูด
Biju s

7
ดูเหมือนว่าฉันชอบเอาท์พุทรหัสจะเป็น "ชื่อของฉันคือแม่" (ทุกอย่าง ~ ยกเว้น ~ ตัวอักษรสองตัวสุดท้าย) ซึ่งไม่ใช่คำถามที่ถามถ้าฉันเข้าใจอย่างถูกต้อง
ewino
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.