JavaScript ไม่ได้แสดงถึงอักขระตัวเดียวเพียงประเภทสตริงสตริงและประเภทอักขระจะเทียบเท่ากับสตริงที่มีอักขระเดียวเท่านั้น
สตริงสตริงเป็นประเภทข้อมูลพื้นฐานของ JavaScript ในเวลาเดียวกัน JavaScript ยังรองรับวัตถุสตริงซึ่งเป็นวัตถุ wrapper ที่มีค่าดั้งเดิม JavaScript แปลงระหว่างรูปแบบดั้งเดิมและแบบฟอร์มวัตถุโดยอัตโนมัติเมื่อจำเป็น บทความนี้จะแนะนำประเภทสตริงต้นฉบับและวัตถุ wrapper สตริง
คำนิยาม
ประเภทสตริงคือลำดับของอักขระที่ประกอบด้วยอักขระ Unicode 16 บิตที่ล้อมรอบในเครื่องหมายคำพูด
ประเภทสตริงมักใช้เพื่อแสดงข้อมูลข้อความและในเวลานี้แต่ละองค์ประกอบในสตริงถือเป็นจุดรหัส แต่ละองค์ประกอบได้รับการพิจารณาให้ครอบครองตำแหน่งในลำดับนี้จัดทำดัชนีตำแหน่งเหล่านี้ด้วยค่าที่ไม่เป็นลบ ตัวละครตัวแรกเริ่มต้นที่ตำแหน่ง 0 ตัวละครตัวที่สองอยู่ที่ตำแหน่ง 1 และอื่น ๆ
ความยาวของสตริงคือจำนวนองค์ประกอบ (ตัวอย่างเช่นค่า 16 บิต) สตริงเปล่ามีความยาวเป็นศูนย์ดังนั้นจึงไม่มีองค์ประกอบใด ๆ
การเข้ารหัส Unicode
อักขระทั้งหมดสามารถเขียนในรูปแบบของ '/uxxxx' โดยที่ xxxx แสดงถึงการเข้ารหัส Unicode ของอักขระ ตัวอย่างเช่น /U00A9 แสดงถึงสัญลักษณ์ลิขสิทธิ์
var s = '/u00a9'; s // "©"
หากสตริงมีข้อมูลข้อความจริงแต่ละองค์ประกอบจะถือว่าเป็นหน่วย UTF-16 แยกต่างหาก ตัวละครแต่ละตัวจะถูกเก็บไว้ในรูปแบบ 16 บิต (เช่น 2 ไบต์) รูปแบบ UTF-16 ภายใน JavaScript
แต่ UTF-16 มีความยาวสองความยาว: สำหรับอักขระระหว่าง U+0000 และ U+FFFF ความยาวคือ 16 บิต (เช่น 2 ไบต์); สำหรับอักขระระหว่าง U+10,000 และ U+10FFFF ความยาวคือ 32 บิต (เช่น 4 ไบต์) และสองไบต์แรกอยู่ระหว่าง 0xD800 ถึง 0xDBFF และสองไบต์สุดท้ายอยู่ระหว่าง 0xDC00 และ 0xDFFFF และสองไบต์สุดท้ายระหว่าง 0xDC00 และ 0xDFFFF
ตัวอย่างเช่นอักขระ "?" ที่สอดคล้องกับ U+1D306 ถูกเขียนเป็น UTF-16 ซึ่งเป็น 0xd834 0xdf06 เบราว์เซอร์จะจดจำทั้งสี่ไบต์เหล่านี้อย่างถูกต้องเป็นตัวละครตัวหนึ่ง แต่ความยาวของตัวละครภายในจาวาสคริปต์จะถูกกำหนดไว้ที่ 16 บิตเสมอและสี่ไบต์เหล่านี้จะถือว่าเป็นตัวละครสองตัว
var s = '/ud834/udf06'; s // "?" s.length // 2
สำหรับอักขระ Unicode 4 ไบต์จาก U+10,000 ถึง U+10FFFF JavaScript จะได้รับการปฏิบัติเสมอเป็นอักขระสองตัว (แอตทริบิวต์ความยาวอักขระคือ 2)
อัญประกาศ
สตริงสตริงถูกประกาศโดยคำพูดสองครั้ง (") หรือคำพูดเดี่ยว (') Java ประกาศสตริงด้วยคำพูดสองเท่าและอักขระที่มีเครื่องหมายคำพูดเดียวเนื่องจาก Ecmascript ไม่มีประเภทอักขระทั้งสองสัญลักษณ์นี้สามารถใช้งานได้ แต่คำพูดด้านซ้ายและขวาจะต้องตรงกัน
// แก้ไข var scolor1 = "red"; var scolor2 = 'red'; // ข้อผิดพลาด var scolor1 = "red '; var scolor2 =' red";
สตริงที่คั่นด้วยเครื่องหมายคำพูดเดียวสามารถมีคำพูดสองเท่าและสตริงที่คั่นด้วยคำพูดสองเท่ายังสามารถมีใบเสนอราคาเดียว
'key = "value"' "มันเป็นการเดินทางที่ยาวนาน"
รหัส JavaScript อาจผสมกับสตริงของรหัส HTML และรหัส HTML จะถูกผสมกับรหัส JavaScript ดังนั้นจึงเป็นการดีที่สุดที่จะใช้รูปแบบการเสนอราคาแยกต่างหากในรหัส JavaScript และ HTML แต่ละรหัส
คำพูดเดียวใช้เพื่อแสดงสตริงใน JavaScript คำพูดสองครั้งใช้เพื่อแสดงสตริงในตัวจัดการเหตุการณ์ HTML
<ปุ่ม onclick = "การแจ้งเตือน ('ขอบคุณ')"> คลิกฉัน </button>แบ็กสแลช
หากคุณต้องการใช้ใบเสนอราคาเดียวในสตริงคั่นคำพูดเดียวหรือคำพูดสองเท่าในสตริงคั่นสองครั้งคุณต้องใช้ backslash (/)
สถานการณ์ที่พบบ่อยคือเครื่องหมายอะพอสโทรฟีและคำพูดเดี่ยวของตัวย่อภาษาอังกฤษและการเขียนที่เป็นเจ้าของเป็นตัวละครเดียวกันดังนั้นคุณต้องใช้ backslash (/) เพื่อหลบหนีจากอะพอสโทรฟี
'คุณจะชอบหนังสือเล่มนี้หรือไม่?' // "คุณไม่ชอบหนังสือเล่มนี้เหรอ?" 'เธอพูด/' สวัสดี/'?' // "เธอพูดว่า 'สวัสดี' หรือไม่" "เธอพูดว่า/" สวัสดี/"?" // "เธอพูดว่า" สวัสดี "?"
อักขระหลายบรรทัด
โดยค่าเริ่มต้นสตริงสามารถเขียนได้ในบรรทัดเดียวเท่านั้นและหากพวกเขาถูกแบ่งออกเป็นหลายบรรทัดพวกเขาจะรายงานข้อผิดพลาด
// ข้อผิดพลาด syntaxerror ที่ไม่ถูกต้อง: ไม่ถูกต้องหรือไม่คาดคิดโทเค็น
'A
ข
C ';
ใน ecmascript3 ต้องเขียนสตริงเป็นบรรทัดเดียว
ใน ecmascript5 สตริงสามารถแบ่งออกเป็นบรรทัดแต่ละบรรทัดจะต้องจบลงด้วย backslash (/)
หากคุณต้องการเริ่มต้นบรรทัดใหม่ในปริมาณโดยตรงสตริงคุณสามารถใช้อักขระหลบหนี /n
// "OneLongline" 'One/Long/Line'/*"Twolines"*/'Two/Nlines'
หลบหนี
ในสตริง JavaScript backslashes (/) มีการใช้งานพิเศษ การเพิ่มตัวละครหลังจากสัญลักษณ์แบ็คสแลชไม่ได้แสดงถึงความหมายที่แท้จริงของพวกเขา พวกเขาใช้เพื่อแสดงถึงตัวละครพิเศษบางตัวที่เรียกว่าตัวละครหลบหนี
/0 ไบต์เปล่า
/n
/ttable
/B Space
/r Enter
/f กระดาษป้อน
// slash
/'คำคมเดี่ยว
/"คำคมสองเท่า
/xnn แสดงถึงตัวละครใน hexadecimal nn (n คือ 0-f) เช่น /x41 แสดงถึง 'a'
/unnnn ใน hexadecimal nnnn แสดงถึงอักขระ Unicode (n คือ 0-F) เช่น /U03A3 แสดงถึงตัวละครกรีกε
หากมีการใช้แบ็คสแลชก่อนที่จะมีตัวละครที่ไม่เฉพาะเจาะจง
'/a' // "a"
หากสตริงจำเป็นต้องมีแบ็คสแลชจะต้องเพิ่มแบ็คสแลชอื่นก่อนที่แบ็คสแลชจะหลบหนี
"prev // next" // "prev / next"
คุณสมบัติ
สตริงในจาวาสคริปต์นั้นไม่เปลี่ยนรูป เมื่อสตริงถูกสร้างขึ้นจะไม่สามารถเปลี่ยนแปลงได้ หากต้องการเปลี่ยนสตริงที่บันทึกโดยตัวแปรก่อนอื่นทำลายสตริงต้นฉบับจากนั้นเติมตัวแปรด้วยสตริงอื่นที่มีค่าใหม่
สตริงใหม่สามารถสร้างขึ้นได้โดยการเชื่อมต่อสตริงอื่น ๆ ผ่านตัวดำเนินการ +
var lang = "java"; lang = lang + "สคริปต์"; // 'JavaScript'
กระบวนการจริงของรหัสข้างต้นคือ: ก่อนอื่นสร้างสตริงใหม่ที่สามารถเก็บ 10 อักขระได้จากนั้นกรอกข้อมูลในสตริงนี้ด้วย 'Java' และ 'Script' ขั้นตอนสุดท้ายคือการทำลายสตริงดั้งเดิม 'java' และ 'สคริปต์' เพราะทั้งสองสายนี้ไร้ประโยชน์
กระบวนการนี้เกิดขึ้นในพื้นหลังและยังเป็นเหตุผลว่าทำไมสตริงตัวอย่างช้าในเบราว์เซอร์เก่า (IE6) แต่เบราว์เซอร์รุ่นต่อมาได้แก้ไขปัญหาความไร้ประสิทธิภาพนี้
เทิร์นสตริง
มีสองวิธีในการแปลงค่าเป็นสตริง, toString () และสตริง ()
[หมายเหตุ] คุณสามารถใช้สตริงว่าง "" + ค่าเพื่อแปลงค่าเป็นสตริง
TOSTRING ()
อย่างแรกคือการใช้วิธี ToString () ที่เกือบทุกค่ามี วิธีนี้ส่งคืนการแสดงสตริงของค่าที่เกี่ยวข้อง
[หมายเหตุ] Undefined และ Null ไม่มีวิธีนี้
undefined.toString (); // ข้อผิดพลาด null.toString (); // error true.toString (); // 'true'false.toString (); //' false'Abc'.toString (); // 'abc'1.23.ToString (); วัตถุ] [1,2,3,4] .tostring (); // '1,2,3,4' (วันที่ใหม่ ()). ToString (); // "Sun Jun 05 2016 10:04:53 GMT+0800 (เวลามาตรฐานจีน)
สตริง ()
คุณสามารถใช้สตริงฟังก์ชั่นการแปลง () เมื่อคุณไม่ทราบว่าค่าที่คุณต้องการแปลงนั้นไม่ได้กำหนดหรือเป็นโมฆะ
สตริงฟังก์ชันการแปลง () เป็นไปตามกฎต่อไปนี้:
【 1 】หากค่าเป็นโมฆะให้ส่งคืน 'null'; หากค่าไม่ได้กำหนดให้ส่งคืน 'ไม่ได้กำหนด'
【 2 】หากค่าไม่เป็นโมฆะหรือไม่ได้กำหนดให้โทรหาวิธีการ ToString () และส่งคืนค่าประเภทเดิม
【 3 】หากวัตถุที่ส่งคืนโดยเมธอด toString () จากนั้นเรียกใช้วิธีการ valueof () เพื่อส่งคืนค่าประเภทดั้งเดิม หากวัตถุที่ส่งคืนโดยวิธีการ ValueOF () จะถูกส่งกลับข้อผิดพลาดจะถูกรายงาน
// "3" สตริง ({toString: function () {return 3;}}) // "[Object Object]" String ({valueof: function () {return 2;}}) // "3" สตริง ({valueof: function () {return 2;คุณลักษณะความยาว
แต่ละอินสแตนซ์ของประเภทสตริงมีแอตทริบิวต์ความยาวระบุจำนวนอักขระในสตริง เนื่องจากสตริงไม่เปลี่ยนรูปความยาวของสตริงก็ไม่สามารถเปลี่ยนแปลงได้เช่นกัน
แอตทริบิวต์ความยาวของสตริงไม่ได้ระบุไว้ในการวนรอบ/ในลูปและไม่สามารถลบผ่านตัวดำเนินการลบได้
[หมายเหตุ] สำหรับสตริง S ดัชนีของอักขระสุดท้ายคือ s.length - 1
var str = "test"; console.log (str.length); // 4str.length = 6; console.log (str, str.length); // "ทดสอบ", 4, 4, 4, 4;
ตัวอย่างวิธีการ
วิธีการทั่วไป
ประเภทสตริงเป็นประเภท wrapper ที่สอดคล้องกับสตริงที่สืบทอดสามวิธีของวิธีการทั่วไปของวัตถุวัตถุ toString (), tolocalestring () และ valueof ()
【 ToString () 】
เมธอด toString () ส่งคืนค่าสตริงดั้งเดิมของสตริง
【 tolocalestring () 】
เมธอด tolocalestring () ส่งคืนค่าสตริงต้นฉบับของสตริง
【ค่าของ () 】
เมธอด valueof () ส่งคืนค่าสตริงดั้งเดิมของสตริง
console.log ("ทดสอบ" .valueof ()); // "ทดสอบ" console.log ("ทดสอบ" .tostring ()); // "ทดสอบ" console.log ("ทดสอบ" .tolocalestring ()); // "ทดสอบ"วิธีการเข้าถึงวิธีอักขระ
มีสี่วิธีในการเข้าถึงอักขระในสตริง: Chartat (), วงเล็บ [], charcodeat () และ fromcharcode ()
【 Chartat () 】
วิธี Charat () ได้รับพารามิเตอร์ตามตำแหน่งอักขระของ 0 และส่งคืนอักขระที่ตำแหน่งที่ระบุ เมื่อพารามิเตอร์ว่างเปล่าหรือ NAN พารามิเตอร์เริ่มต้นคือ 0; เมื่อพารามิเตอร์อยู่นอกช่วงสตริงที่ว่างจะถูกส่งคืน
var str = "hello"; console.log (str.charat (1)); // econsole.log (str.charat (-1)); // '' console.log (str.charat (10)); // '' console.log (str.charat ();
วิธี Charat () เกี่ยวข้องกับการแปลงประเภทโดยนัยของฟังก์ชันตัวเลข () หากแปลงเป็นค่าตัวเลขสตริงจะถูกส่งออกตามกฎข้างต้น หากแปลงเป็น NAN อักขระที่ 0 จะถูกส่งออก
var str = "hello"; console.log (str.charat (true)); // 'e'console.log (str.charat (เท็จ)); //' h'console.log (str.charat ('abc')); // 'h'console.log (str.log)[หมายเหตุ] ผลลัพธ์ของ X.Charat (POS) และ X.Substring (POS, POS+1), X.SUBSTR (POS, 1), X.SLICE (POS, POS+1) มีค่าเท่ากับกัน
var str = "hello"; console.log (str.charat (1)); // 'e'console.log (str.substring (1,2)); //' e'console.log (str.slice (1,2)); // 'e'Console.log (str.substr (1,1);
【สาขา】
Ecmascript5 กำหนดวิธีอื่นในการเข้าถึงอักขระโดยใช้วงเล็บเหลี่ยมรวมถึงดัชนีตัวเลขเพื่อเข้าถึงอักขระเฉพาะในสตริง หากพารามิเตอร์อยู่นอกช่วงหรือ NAN เอาต์พุตจะไม่ได้กำหนด; หากไม่มีพารามิเตอร์จะมีการรายงานข้อผิดพลาด วิธีนี้ไม่มีการแปลงประเภทโดยนัยของฟังก์ชันการแปลงตัวเลข () แต่พารามิเตอร์สามารถแปลงเป็นค่าตัวเลขเมื่อเป็นอาร์เรย์ของค่าเอกพจน์
[หมายเหตุ] IE7-Browser ไม่รองรับ
var str = "hello"; console.log (str [0]); // hconsole.log (str [[1]]); // econsole.log (str [false]); // undefinedconsole.log (str [-1]); // undefinedconsole.log (str [nan]
【 charcodeat () 】
วิธี Charcodeat () นั้นคล้ายกับวิธี Charat () ซึ่งได้รับพารามิเตอร์ตามตำแหน่งอักขระของ 0 แต่ส่งคืนการเข้ารหัส Unicode 16 บิตของอักขระที่ระบุ ค่าส่งคืนเป็นจำนวนเต็ม 16 บิตระหว่าง 0-65535 นั่นคือระหว่าง 0x0000-0xffff
เมื่อพารามิเตอร์ว่างเปล่าหรือ NAN พารามิเตอร์เริ่มต้นคือ 0; เมื่อพารามิเตอร์อยู่นอกช่วง NAN จะถูกส่งคืน
var str = "สวัสดี"; console.log (str.charcodeat ()); // 104console.log (str.charcodeat (0)); // 104console.log (str.charcodeat (1)); // 1 01console.log (str.charcodeat (-1)); // nanconsole.log (str.charcodeat (10)); // nanconsole.log (str.charcodeat (nan)); // 104
ในทำนองเดียวกันเมธอด charcodeat () เกี่ยวข้องกับการแปลงประเภทโดยนัยของฟังก์ชันตัวเลข () หากแปลงเป็นค่าตัวเลขค่าที่สอดคล้องกันจะถูกส่งออกตามกฎข้างต้น หากแปลงเป็น NAN การเข้ารหัสอักขระของอักขระ 0 จะถูกส่งออก
var str = "สวัสดี"; console.log (str.charcodeat (true)); // 101console.log (str.charcodeat (เท็จ)); // 104console.log (ST r.charcodeat ('abc')); // 104console.log (str.charcodeat ({})); // 104console.log (str.charcodeat ([2])); // l08【 fromcharcode () 】
ตัวสร้างสตริงเองมีวิธีการคงที่: FromCharcode () งานของวิธีนี้คือการรับการเข้ารหัสอักขระอย่างน้อยหนึ่งรายการจากนั้นแปลงเป็นสตริง โดยพื้นฐานแล้ววิธีนี้ดำเนินการตรงข้ามจากวิธีการอินสแตนซ์ charcodeat () หากพารามิเตอร์ว่างเปล่าและ NAN จะส่งคืนสตริงเปล่า หากพารามิเตอร์เกินช่วง 0-65535 อักขระเอาต์พุตจะไม่สามารถควบคุมได้
console.log (string.fromcharcode (104,101,108,108,111)); // 'hello'console.log (String.fromCharcode (0x6211,0x662f, 0x5c0f, 0x706b, 0x67f4); match'console.log (string.fromcharcode ()); // '' console.log (string.fromcharcode (NAN)); // '' console.log (String.FromCharcode (-1)); console.log (String.fromCharcode (65560);
หากตัวละครใช้เวลาสี่ไบต์จะต้องแบ่งออกเป็นสองอักขระ
console.log (String.FromCharcode (0xd842, 0xdfb7)); // "�line"
การเย็บสตริง
มีสองวิธีสำหรับการเย็บสตริง: concat () และ plus sign +
【 concat () 】
วิธีการ concat () ใช้เพื่อแยกสายอย่างน้อยหนึ่งสตริงและส่งคืนสตริงใหม่ที่ได้จากการประกบในขณะที่สตริงต้นฉบับไม่เปลี่ยนแปลง หากพารามิเตอร์ (ยกเว้นพารามิเตอร์แรก) ไม่ใช่สตริงมันจะถูกแปลงโดยปริยายเป็นสตริงผ่านวิธีสตริง () จากนั้นทำการประกบสตริง
var stringValue = 'hello'; var result = stringValue.concat ('โลก', '!'); console.log (ผลลัพธ์); // 'Hello World!' console.log (StringValue); // 'Hello'[หมายเหตุ] พารามิเตอร์แรกสามารถเป็นสตริงได้เท่านั้น หากเป็นประเภทอื่น (ยกเว้นอาร์เรย์) จะมีการรายงานข้อผิดพลาด
(1) .concat ('2'); // รายงานข้อผิดพลาด
(จริง) .concat ('false'); // รายงานข้อผิดพลาด
({}). concat ('abc'); // รายงานข้อผิดพลาด
[หมายเหตุ] เนื่องจากอาร์เรย์ยังมีวิธีการ concat () พารามิเตอร์จะกำหนดวิธีการแปลงตามพารามิเตอร์ที่ปรากฏก่อนคืออาร์เรย์หรือสตริง
'1,2,3,'. concat ([4,5]); // '1,2,3,4,5'
[1,2,3] .concat (', 4,5'); // [1, 2, 3, ", 4,5"
【 Plus Operator (+) 】
แม้ว่า concat () เป็นวิธีที่ใช้โดยเฉพาะในการประกบสตริงการใช้งานมากขึ้นของผู้ให้บริการบวก (+) ในทางปฏิบัติ การใช้ตัวดำเนินการบวกมักจะง่ายกว่า concat ()
var stringValue = 'hello'; console.log (stringValue.concat ('โลก', '!')); // 'Hello World!' console.log (StringValue + 'World' + '!'); // 'Hello World!'[หมายเหตุ] การเย็บสตริงจะดำเนินการเมื่อหนึ่งในตัวถูกดำเนินการเป็นสตริงหรือถ้าวัตถุถูกแปลงเป็นสตริง
1 + 2; // 3'1 ' + 2; //' 12'Var o = {valueof: function () {return '1';}}; o + 2; // '12'var o = {valueof: function () {return 1;}}; o + 2; // 3 // 3สร้างย่อย
มีสามวิธีในการสร้าง substrings: slice (), substr () และ substring ()
【ชิ้น()】
เมธอดชิ้นส่วน (เริ่มต้น) ต้องใช้พารามิเตอร์สองพารามิเตอร์เริ่มต้นและสิ้นสุดซึ่งส่งคืนสตริงย่อยในสตริงนี้จากอักขระที่ตำแหน่งเริ่มต้นไปที่ (แต่ไม่มี) อักขระที่ตำแหน่งท้าย หากปลายไม่ได้กำหนดหรือไม่มีอยู่จะส่งคืนอักขระทั้งหมดจากตำแหน่งเริ่มต้นไปยังส่วนท้ายของสตริง
หากเริ่มต้นเป็นจำนวนลบให้เริ่ม = สูงสุด (ความยาว + เริ่ม, 0)
ถ้าสิ้นสุดเป็นจำนวนลบ, end = สูงสุด (ความยาว + end, 0)
เริ่มต้นและสิ้นสุดไม่สามารถแลกเปลี่ยนตำแหน่งได้
var stringValue = 'hello world'; console.log (StringValue.slice ()); // 'Hello World'console.log (StringValue.slice (2)); //' llo World'Console.log world'console.log (stringvalue.slice (2, -5)); // 'llo 'console.log (stringvalue.slice (2, -20)); //' 'console.log (stringValue.slice (20)); //' 'console.log (StringValue.slice (-2,2)); //' console.log console.log (stringvalue.slice (-2,20)); // 'ld'console.log (StringValue.slice (-20,2)); //' he'console.log (StringValue.slice (-20, -2);
เมธอด slice () เกี่ยวข้องกับการแปลงประเภทโดยนัยของฟังก์ชันการแปลงตัวเลข () เมื่อเริ่มต้นถูกแปลงเป็น NAN มันจะเทียบเท่ากับ start = 0; เมื่อปลายถูกแปลงเป็น NAN (ยกเว้นปลายไม่ได้กำหนด) สตริงว่างจะถูกส่งออก
var stringValue = 'hello world'; console.log (stringValue.slice (nan)); // 'สวัสดี world'console.log (StringValue.slice (0, nan)); // '' console.log (StringValue.slice (จริง, [3])); // 'el'Console.log (stringvalue.slice (null, undefined); world'console.log (StringValue.slice ('2', [5])); // 'llo'【 substring () 】
วิธีการย่อย (เริ่มต้นสิ้นสุด) ต้องใช้พารามิเตอร์สองพารามิเตอร์เริ่มต้นและสิ้นสุดซึ่งส่งคืนสตริงย่อยในสตริงนี้จากอักขระที่ตำแหน่งเริ่มต้นไปที่ (แต่ไม่มี) อักขระที่ตำแหน่งท้าย หากปลายไม่ได้กำหนดหรือไม่มีอยู่จะส่งคืนอักขระทั้งหมดจากตำแหน่งเริ่มต้นไปยังส่วนท้ายของสตริง
หากพารามิเตอร์ทั้งสองหรือลบจะถูกแทนที่ด้วย 0
หากพารามิเตอร์ใด ๆ มากกว่าความยาวสตริงมันจะถูกแทนที่ด้วยความยาวของสตริง
หากเริ่มต้นมากกว่าสิ้นสุดค่าของพวกเขาจะถูกเปลี่ยน
var stringValue = 'hello world'; console.log (StringValue.substring ()); // 'Hello World'console.log (StringValue.substring (2)); //' llo World'Console.log (StringValue.substring world'console.log (StringValue.substring (20)); // '' console.log (StringValue.substring (-2,2)); // 'he'console.log (StringValue.s ubstring (nan, 2)); // 'he'console.log (stringvalue.substring (-2,20)); //' he'console.log (stringvalue.substring (-2,20)); world'console.log (stringvalue.substring (3,2)); // 'l'console.log (StringValue.substring (3, nan)); //' hel 'console.log (stringvalue.substring (-20,2)); //' he'console.log (StringValue.substring (-20, -2)); // '' ''
ในทำนองเดียวกันเมธอด substring () ยังเกี่ยวข้องกับการแปลงประเภทโดยนัยของฟังก์ชันการแปลงตัวเลข () โดยนัย
var stringValue = 'hello world'; console.log (stringValue.substring (จริง, [3])); // 'el'Console.log (StringValue.substring (null, undefined)); //' hello world'console.log world'console.log (stringvalue.substring ({})); // 'hello world'console.log (StringValue.substring (' 2 ', [5])); //' llo '【 substr () 】
วิธีการย่อย (เริ่มต้นสิ้นสุด) ต้องใช้พารามิเตอร์สองพารามิเตอร์เริ่มต้นและสิ้นสุด สิ้นสุดแสดงถึงจำนวนอักขระในสายย่อยที่ส่งคืน วิธีนี้ส่งคืนสตริงย่อยของอักขระปลายเริ่มต้นจากอักขระที่ตำแหน่งเริ่มต้นในสตริงนี้ หากปลายไม่ได้กำหนดหรือไม่มีอยู่จะส่งคืนอักขระทั้งหมดจากตำแหน่งเริ่มต้นไปยังส่วนท้ายของสตริง
หากเริ่มต้นเป็นจำนวนลบให้เริ่ม = สูงสุด (ความยาว + เริ่ม, 0)
หากเริ่มต้น NAN มันจะเทียบเท่ากับ start = 0
หากปลายเป็นจำนวนลบหรือน่าน, end = 0 ดังนั้นจึงส่งคืนสตริงว่างเปล่า
เริ่มต้นและสิ้นสุดไม่สามารถแลกเปลี่ยนตำแหน่งได้
[หมายเหตุ] วิธีนี้ไม่ใช่มาตรฐาน ECMASCRIPT และเลิกใช้แล้ว
[หมายเหตุ] IE8- เบราว์เซอร์มีปัญหาในการจัดการสถานการณ์ที่ค่าลบจะถูกส่งผ่านไปยัง substr () มันจะส่งคืนสตริงต้นฉบับ
var stringValue = 'hello world'; console.log (stringvalue.substr ()); // 'hello world'console.log (StringValue.substr (2)); //' llo World'console.log (StringValue.substr (2 world'console.log (stringvalue.substr (2, nan)); // '' console.log (stringvalue.substr (nan, 2)); // 'he'console.log (StringValue.substr (20)); //' 'console.log alue.substr (-2,3)); // 'ld'console.log (stringValue.substr (-2,20)); //' ld'console.log (stringvalue.substr ('' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' - - - - console.log (stringvalue.substr (2,5)); // llo wในทำนองเดียวกันเมธอด substr () ยังเกี่ยวข้องกับการแปลงประเภทโดยนัยของฟังก์ชันการแปลงตัวเลข () โดยนัย
var stringValue = 'hello world'; console.log (stringvalue.substr (จริง, [3])); // 'el'console.log (StringValue.substr (null, undefined)); //' hello world'console.log (stringvalue.substr world'console.log (StringValue.substr ('2', [5])); // 'llo w'ตำแหน่งสตริง
มีสองวิธีในการค้นหาตำแหน่งของ substrings จาก strings: indexof () และ lastindexof ()
【ดัชนี () 】
INDEXOF (SearchString, Start) Method ได้รับพารามิเตอร์สองตัว: SearchString และเริ่มต้นกลับไปที่ตำแหน่งที่ SearchString ปรากฏขึ้นครั้งแรกและหากไม่พบ
วิธีนี้เรียกใช้ฟังก์ชันการแปลงสตริง () โดยปริยายเพื่อแปลงค่า SearchString ที่ไม่ใช่สตริงเป็นสตริง เรียกใช้ฟังก์ชันการแปลงหมายเลข () โดยปริยายเพื่อแปลงค่าที่ไม่ใช่ตัวเลข (ยกเว้นไม่ได้กำหนด) เป็นค่าตัวเลขเป็นค่าตัวเลข
SearchString แสดงถึงสตริงย่อยที่จะค้นหา; เริ่มต้นแสดงถึงตำแหน่งเริ่มต้นของการค้นหา หากพารามิเตอร์ถูกละเว้นหรือพารามิเตอร์ไม่ได้กำหนด NAN หรือลบเริ่ม = 0
var string = 'Hello World World '; console.log (string.indexof (' ld ')); // 9console.log (string.indexof (' ld ', undefined)); // 9console.log (string.indexof (' ld ', nan)); // 9console.log ring.indexof ('ld',-1)); // 9console.log (string.indexof ('ld',-1)); // 9console.log (string.indexof ( 'ld',-1)); // 9console.log (string.indexof ('ld',-1)); // 9console.log (string.indexof ('ld',-1)); // 9 console.log (string.indexof ('ld', 10)); // 15console.log (string.indexof ('ld', [10])); // 15console.log (string.index ของ ('true', [10])); //-1console.log (string.indexof (เท็จ, [10])); //-1console.log (string.indexof (เท็จ, [10])); //-1【 LastIndexof () 】
เมธอด LastIndexof (SearchString, Start) ได้รับสองพารามิเตอร์: SearchString และเริ่มต้นและส่งคืนครั้งสุดท้ายที่ SearchString ปรากฏขึ้น หากไม่พบ
ในทำนองเดียวกันวิธีนี้เรียกใช้ฟังก์ชันการแปลงสตริง () โดยปริยายเพื่อแปลงค่า SearchString ที่ไม่ใช่สตริงเป็นสตริง เรียกใช้ฟังก์ชันการแปลงตัวเลข () โดยปริยายเพื่อแปลงค่าเริ่มต้นที่ไม่ใช่ตัวเลข (ยกเว้นไม่ได้กำหนด) เป็นค่าตัวเลข
SearchString แสดงถึงสตริงย่อยที่จะค้นหา; เริ่มต้นแสดงถึงตำแหน่งเริ่มต้นของการค้นหา หากพารามิเตอร์ถูกละเว้นหรือพารามิเตอร์ไม่ได้กำหนดหรือ NAN ให้เริ่ม = ความยาว - 1
[หมายเหตุ] ไม่เหมือนกับวิธีการดัชนี () หากเริ่มต้นเป็นลบวิธีการส่งคืน -1
var String = 'Hello World World'; console.log (string.indexof ('ld')); // 9console.log (string.indexof ('ld', undefined)); // 9console.log (string.indexof ('ld', nan); // 9console.log console.log (string.indexof ('ld', 10)); // 15console.log (string.indexof ('ld', [10])); // 15console.log (string.index ของ ('true', [10])); //-1console.log (string.indexof (เท็จ, [10])); //-1console.log (string.indexof (เท็จ, [10])); //-1tips เคล็ดลับ】ค้นหาพื้นผิวย่อยทั้งหมดที่ตรงตามเกณฑ์ของสตริง
substrings ที่ตรงกันทั้งหมดสามารถพบได้โดยการวนซ้ำเพื่อเรียกดัชนีของ () หรือ lastindexof ()
ฟังก์ชั่น allindexof (str, ค่า) {var result = []; var pos = str.indexof (ค่า); ในขณะที่ (pos> -1) {result.push (pos); pos = str.indexof (ค่า, pos+value.length);} ผลตอบแทนผล} console.log (allindexof ('hellhellhell', 'll')); // [2,7,12]【 trim () 】
Ecmascript5 กำหนดวิธีการตัดแต่ง () สำหรับสตริงทั้งหมด วิธีนี้สร้างสำเนาของสตริงลบอักขระว่างทั้งหมดในคำนำหน้าและคำต่อท้ายและส่งคืนผลลัพธ์
เนื่องจากเมธอด trim () ส่งคืนสำเนาของสตริงคำนำหน้าและช่องว่างคำต่อท้ายในสตริงต้นฉบับจะยังคงไม่เปลี่ยนแปลง
[หมายเหตุ] IE8-Browser ไม่รองรับ
var string = 'hello world'; console.log (string.trim ()); // 'hello world'console.log (String); //' Hello World '
อักขระ Whitespace รวมถึงช่องว่างไม่เพียง แต่ยังรวมถึงอักขระแท็บ (/t), ตัวแบ่งบรรทัด (/n) และอักขระส่งคืนรถ (/r)
'/r/nabc /t'.trim () //' abc '
นอกจากนี้ Firefox, Safari และ WebKit ยังรองรับ Trimright () ที่ไม่ได้มาตรฐาน () สำหรับการลบตัวละครช่องว่างในตอนท้ายของสตริง
var string = 'hello world'; console.log (string.trimright ()); // 'Hello World';
【เคล็ดลับ】ใช้ trim () เพื่อตรวจสอบว่าอักขระที่ป้อนนั้นว่างเปล่า
if (usename.trim (). ความยาว) {แจ้งเตือน ('ถูกต้อง');} else {Alert ('ข้อผิดพลาด');}【เคล็ดลับ】จำลองการตัดแต่ง () ด้วยการแสดงออกปกติ
ฟังก์ชั่น fntrim (str) {return str.replace (/^/s+|/s+$/, '')} console.log (fntrim ('Hello World')); // 'Hello World'การแปลงเคส
มีสี่วิธีที่เกี่ยวข้องในการแปลงกรณีสตริงใน eCmascript: toLowerCase (), tolocalelowercase (), touppercase () และ tolocaleuppercase ()
ToLowerCase () และ touppercase () เป็นสองวิธีแบบคลาสสิกที่ยืมมาจากวิธีการชื่อเดียวกันใน java.lang.string วิธีการ tolocalelowercase () และ tolocaleuppercase () ถูกนำมาใช้สำหรับภูมิภาคเฉพาะ สำหรับบางภูมิภาควิธีการสำหรับภูมิภาคนั้นเหมือนกับผลลัพธ์ที่ได้จากวิธีการทั่วไป อย่างไรก็ตามบางภาษา (เช่นตุรกี) จะใช้กฎพิเศษสำหรับการแปลงกรณี Unicode ในเวลานี้จะต้องใช้วิธีการสำหรับภูมิภาคเพื่อให้แน่ใจว่าการแปลงที่ถูกต้องจะเกิดขึ้นได้
【 touppercase () 】
เมธอด touppercase () แปลงสตริงเป็นตัวพิมพ์ใหญ่
【 ToLowerCase () 】
วิธี TOLOWERCASE () แปลงสตริงเป็นตัวพิมพ์เล็ก
【 tolocaleuppercase () 】
เมธอด tolocaleuppercase () แปลงสตริงเป็นตัวพิมพ์ใหญ่ (สำหรับภูมิภาค)
【 tolocalelowercase () 】
วิธี tolocalelowercase () แปลงสตริงเป็นตัวพิมพ์เล็ก (สำหรับภูมิภาค)
[หมายเหตุ] ปลอดภัยกว่าที่จะใช้วิธีเฉพาะภูมิภาคโดยไม่ทราบว่ารหัสใดของคุณจะทำงาน
var string = 'hello world'; console.log (string.toLowercase ()); // hello worldconsole.log (string.tolocalelowercase ()); // hello worldconsole.log (string.touppercase ()); // hello worldconsole.log
4 วิธีเหล่านี้ไม่รองรับสตริง () การแปลงประเภทโดยปริยาย
(จริง) .ToLowerCase (); // รายงานข้อผิดพลาด
(2) .tolocalelowercase (); // รายงานข้อผิดพลาด
({}). touppercase (); // รายงานข้อผิดพลาด
([]). tolocaleuppercase (); // รายงานข้อผิดพลาด
[หมายเหตุ] วิธีการแปลงเคสสามารถใช้งานได้อย่างต่อเนื่อง
var string = 'hello world'; console.log ((string.touppercase ()). toLowerCase ()); // hello world
【 localEcompare () 】
วิธี LocalEcompare () ใช้เพื่อเปรียบเทียบสองสตริงตามกฎต่อไปนี้
[1] หากสตริงควรจัดอันดับก่อนพารามิเตอร์สตริงในตัวอักษรจำนวนลบจะถูกส่งคืน (ส่วนใหญ่ -1)
【 2 】หากสตริงเท่ากับพารามิเตอร์สตริงให้ส่งคืน 0
【 3 】หากควรวางสตริงหลังจากพารามิเตอร์สตริงในตัวอักษรจำนวนบวกจะถูกส่งคืน (ในกรณีส่วนใหญ่ 1)
var stringValue = 'yellow'; console.log (StringValue.localEcompare ('Brick')); // 1 'y'> 'b'console.log (StringValue.localEcompare (' Yellow '); // 0' Yellow '==' Yellow'Console.log 'Zoo'[หมายเหตุ] แม้ว่าตัวอักษรตัวใหญ่ในตัวอักษรจะอยู่ด้านหน้าตัวอักษรตัวพิมพ์เล็กดังนั้นตัวอักษรตัวใหญ่ <ตัวอักษรตัวพิมพ์เล็ก แต่วิธี LocalEcompare () จะคำนึงถึงสถานการณ์การเรียงลำดับของภาษาธรรมชาติและอันดับ 'B' ต่อหน้า 'A'
console.log ('b'.localeCompare (' a ')); // 1console.log (' b '>' a '); // falseconsole.log (' b'.localecompare ('a')); // 1console.log ('b'> 'a');ข้างต้นเป็นความรู้ที่เกี่ยวข้องเกี่ยวกับคำอธิบายโดยละเอียดของประเภทสตริงสตริงของระบบประเภท JavaScript ที่แนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!