คุณจะรับความยาวของสตริงได้อย่างไร


คำตอบ:


471

คุณไม่จำเป็นต้อง jQuery yourstring.lengthใช้เพียง ดูการอ้างอิงที่นี่และที่นี่

อัปเดต :

ในการรองรับสตริง Unicode จำเป็นต้องคำนวณความยาวดังนี้:

[..."𠮷"].length

หรือสร้างฟังก์ชั่นเสริม

function uniLen(s) {
    return [...s].length
}

6
ฉันก็ด้วยโอ้ความสุขของ SO
karim79

11
ฉันเดิมพันว่าเป็นเพียงการแข่งขัน : D
Arnis Lapsa

11
Artem Barger - อาจเป็นเพราะเขาถามเกี่ยวกับการใช้ Jquery
วัฏจักร

2
Artem Barger - อาจเป็นเพราะเขากำลังมองหาสิ่งเดียวกับฉัน: วิธีรับความยาวของข้อความที่อยู่ในแท็ก HTML ฉันเป็นผู้เริ่มต้นดังนั้นฉันจึงรู้วิธีที่จะได้รับเนื้อหา แต่ไม่ใช่ความยาว ในแง่นั้นคำตอบของแหล่งกำเนิดนั้นดีกว่า
Adrian Pauly

1
"𠮷".length == 2. เราจะได้จำนวนตัวอักษรที่แท้จริงได้อย่างไร?
Pierre Thibault

196

วิธีที่ง่ายที่สุด:

$('#selector').val().length

37
คำตอบเดียวที่ตอบคำถามตามที่ถาม
mtntrailrunner

5
มันเป็นอย่างไร ไม่มีที่ในคำถามที่เขาพูดอะไรเกี่ยวกับสตริงที่มาจาก:inputค่า
mkoryak

2
อันนี้ทำอย่างนี้: len = $('#selector').is('div') ? "someString".length : 0และทำให้รู้สึกมาก ...
mkoryak

แต่นี่ยังใช้ javascript เท่านั้นใช่ไหม? เช่นเดียวกับคำตอบของ @Artem Barger
Malcolm Salvador

41

jQuery เป็นห้องสมุด JavaScript

คุณไม่จำเป็นต้องใช้ jQuery เพื่อรับความยาวของสตริงเนื่องจากเป็นคุณสมบัติวัตถุสตริง JavaScript พื้นฐาน

somestring.length;

13
+1 เพื่อรวมบรรทัด 'jQuery เป็นห้องสมุด JavaScript' คำตอบมากมายบอกว่าคุณไม่ต้องการ jQuery แต่สิ่งนี้อาจสร้างความสับสนให้กับคนที่คิดว่า 'jQuery' และ 'JavaScript' เป็นสองสิ่งที่แตกต่างกัน
Grant Wagner



19

ความแตกต่างที่สำคัญคือถ้าองค์ประกอบเป็นอินพุตหรือไม่ หากอินพุตคุณสามารถใช้:

$('#selector').val().length;

มิฉะนั้นหากองค์ประกอบเป็นองค์ประกอบ html ที่แตกต่างกันเช่นย่อหน้าหรือรายการในรายการ div เป็นต้นคุณต้องใช้

$('#selector').text().length;

1
มันถูกต้องคำตอบสำหรับคำถามนี้! ที่นี่มีการกำหนดจริง ๆ วิธีรับความยาวของค่า "ฟิลด์อินพุต" หรือ "ข้อความ" เพิ่มเติมมันเป็นไปได้ที่จะได้รับความยาว HTML, $('#selector').html().lengthเช่น
Eugen



1

ใน jQuery:

var len = jQuery('.selector').val().length; //or 
( var len = $('.selector').val().length;) //- If Element is Text Box

หรือ

var len = jQuery('.selector').html().length; //or
( var len = $('.selector').html().length; ) //- If Element is not Input Text Box

ใน JS:

var len = str.len;

1

ในบางกรณีString.lengthอาจส่งคืนค่าซึ่งแตกต่างจากจำนวนอักขระที่แท้จริงที่ปรากฏบนหน้าจอ (เช่นอีโมจิบางตัวถูกเข้ารหัสด้วย 2 UTF-16 ยูนิต):

MDN พูดว่า : คุณสมบัตินี้ส่งคืนจำนวนหน่วยรหัสในสตริง UTF-16 ซึ่งเป็นรูปแบบสตริงที่ใช้โดย JavaScript ใช้หน่วยรหัส 16 บิตเดียวเพื่อแทนอักขระที่พบบ่อยที่สุด แต่จำเป็นต้องใช้หน่วยรหัสสองหน่วยสำหรับอักขระที่ใช้น้อยกว่าปกติดังนั้นจึงเป็นไปได้ที่ค่าที่ส่งคืนด้วยความยาวจะเป็น ไม่ตรงกับจำนวนที่แท้จริงของตัวละครในสตริง

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