String
String คือ ข้อมูลประเภทข้อความหรือชุดของตัวอักขระที่เรียงต่อกัน ภายในเครื่องหมาย "..." (Double Quote) เช่น "ภาษา Swift" หรือ "こんにちは" เป็นต้น
การสร้างและจัดเก็บข้อความ
การประกาศค่าเพื่อจัดเก็บข้อมูลประเภทข้อความ หรือ String สามารถทำได้ทั้งแบบ let
และ var
ดังนี้
การสร้างข้อความใหม่จาก String ตั้งแต่ 2 ค่าขึ้นไป ทำได้โดยใช้เครื่องหมาย +
(Additional operator) เพื่อเชื่อมต่อ (Concatenation) ข้อความ ดังนี้
หากต้องการแสดงอักขระ เช่น ' (Single quote) , " (Double quote) , \(Backslash) หรือ กำหนดให้แสดงการเว้นวรรคด้วย Tab ในข้อความ จะสามารถทำได้โดยใช้ escape charector ดังนี้
\'
หมายถึง การแสดงเครื่องหมาย Single quote\"
หมายถึง การแสดงเครื่องหมาย Double quote\\
หมายถึง การแสดงเครื่องหมาย Backslash\t
หมายถึง การเว้นวรรคด้วย tab\n
หมายถึง การขึ้นบรรทัดใหม่
ตัวอย่างเช่น
ในบางครั้ง เราอาจจะต้องการนำค่าที่เก็บไว้ในตัวแปรหรือค่าคงที่มาแทรกลงในข้อความ (Interpolation) ซึ่งสามารถทำได้โดยใช้ \(
ชื่อตัวแปรหรือค่าคงที่)
ตัวอย่างเช่น
ตัวอักขระ (Character Type)
Character Type จะใช้ในการจัดเก็บ "ตัวอักขระ" เพียงตัวเดียว เช่น "ก", "A" , " は" หรือ "!" เป็นต้น
การเปรียบเทียบข้อความ
ข้อความในภาษา Swift ลักษณะเป็นแบบ case-sensitive กล่าวคือ หากทำการเปรียบเทียบค่าของ "January" และ "january" จะได้ผลลัพธ์ว่าเป็นข้อความที่มีค่าไม่เท่ากัน เราสามารถนำข้อความมาเปรียบเทียบกันได้โดยใช้ ตัวดำเนินการเปรียบเทียบ (Comparison Operators) ดังอย่างต่อไปนี้
ดังนั้น หากต้องการทำการเปรียบเทียบข้อมูลโดยในรูปแบบ case-insensitive จะต้องใช้ตัวดำเนินการเปรียบเทียบร่วมกับฟังก์ชัน uppercased()
, lowercased()
หรือ capitalized
ดังตัวอย่างต่อไปนี้
ฟังก์ชันและคุณสมบัติพื้นฐานอื่นๆ
isEmpty
เป็น Boolean property ที่ใช้เพื่อตรวจสอบว่ามีข้อความถูกเก็บอยู่ใน String หรือไม่
count
เป็น property ที่ใช้เพื่อการนับจำนวนตัวอักขระ (Character) ใน String
append()
และ appending()
เป็นฟังก์ชันสำหรับการเพิ่มข้อความต่อท้ายข้อความเดิมที่เก็บไว้ใน String
hasPrefix()
และ hasSuffix ()
เป็นฟังก์ชันเพื่อใช้ในการตรวจสอบอักขระหรือคำขึ้นต้นและลงท้ายในข้อความ ตามลำดับ
contain ()
เป็นฟังก์ชันสำหรับตรวจสอบว่ามี String ที่ระบุอยู่ในข้อความหรือไม่
replacingOccurrences (Of: with: )
เป็นฟังก์ชันสำหรับการแทนที่คำหรือข้อความใน String
firstIndex(of: )
เป็นฟังก์ชันที่ใช้ในการค้นหาตำแหน่งของอักขระที่ระบุ โดยผลลัพธ์ที่ได้จะเป็น String.index ของตำแหน่งแรกที่พบอักขระ และเป็นข้อมูลแบบ Optional เนื่องจากจะคืนค่าเป็น nil หากค้นหาแล้วไม่พบอักขระที่ต้องการอยู่ในข้อความ ดังนั้น จึงต้องทำการ Unwrap หรือ Binding ก่อนเมื่อนำมาใช้งาน
range(of: )
เป็นฟังก์ชันที่ทำงานในลักษณะเดียวกับ firstIndex(of: )
แต่ใช้ในการค้นหาชุดของอักขระที่ได้ระบุไว้ ผลลัพธ์ที่ได้จากการทำงานเป็นแบบ Optional กล่าวคือจะคืนค่าเป็น nil หากค้นหาแล้วไม่พบชุดอักขระในข้อความ ดังนั้น จึงต้องทำการ Unwrap หรือ Binding ก่อนเมื่อนำมาใช้งาน
remove(at: )
เป็นฟังก์ชันสำหรับการลบอักขระ 1 ตัว ซึ่งอยู่ ณ ตำแหน่ง String.index ของข้อความที่กำหนด และ removeSubrange ( )
เป็นฟังก์ชันสำหรับการลบชุดอักขระในตำแหน่งหรือช่วงของ String.index ที่กำหนดออกจากข้อความ
insert( _: , at: )
เป็นฟังก์ชันสำหรับการเพิ่มอักขระ 1 ตัว ณ ตำแหน่ง String.index ของข้อความที่กำหนด และ insert (contentOf: , at: )
เป็นการแทรกชุดอักขระในตำแหน่งString.index ของข้อความที่กำหนด
replaceSubrange ( _: , with: )
ใช้สำหรับการแทนที่ข้อความด้วยชุดอักขระในตำแหน่งของช่วงที่กำหนด
สตริงย่อย (Substring)
เมื่อเราดำเนินการแบ่งข้อความ (String) ออกมาบางส่วน ผลลัพธ์ที่ได้ คือ ข้อมูลที่มีโครงสร้างเป็น String.SubSequence โดย SubSequence เป็น typealis ของ Substring ซึ่งการดำเนินการกับ Substring นั้น จะมีความสะดวกและมีประสิทธิภาพกว่าการสร้าง String ขึ้นใหม่ เนื่องจากสตริงย่อยใช้ที่เก็บข้อมูลร่วมกับ String เดิม และยังมี Method ส่วนใหญ่เช่นเดียวกับ String ดังนั้น คุนจึงสามารถทำงานกับ Substring ได้ในลักษณะเดียวกับ String
ในตัวอย่างข้างต้น greeting
เป็น String ซึ่งหมายความว่า มันมีพื้นที่หน่วยความจำที่เก็บอักขระที่ประกอบขึ้นเป็นข้อความ เนื่องจาก beginning
เป็น Substring ของ greeting
ดังนั้นจะเกิดความผิดพลาดขึ้นหากเขียนคำสั่ง
การใช้ Substring นั้น เหมาะสมกับการดำเนินการในช่วงสั้นๆ เท่านั้น เนื่องจากมันมีการใช้หน่วยความจำในการจัดเก็บข้อมูลจาก String ต้นฉบับ จึงทำให้ระบบจำเป็นต้อง retain หน่วยความจำของต้นฉบับเอาไว้ตราบเท่าที่ Substring นั้นยังทำงานอยู่ ส่งผลให้เกิดความสิ้นเปลืองหน่วยความจำของระบบ ดังนั้น เมื่อต้องการจัดเก็บหรือนำข้อมูลไปใช้งานในระยะยาวจึงควรทำการแปลงชนิดให้เป็น String เสียก่อน
แหล่งข้อมูลอ้างอิง
The Swift Programming Language (Swift 5.2 beta), Apple Inc., 2020
App Development with Swift, Apple Inc., 2017. Available on: Apple Book Store.
รายละเอียดเพื่อการอ้างอิง ผู้เขียน ธิติ ธีระเธียร วันที่เผยแพร่ วันที่ 16 มิถุนายน 2562. วันที่ปรุงปรุงล่าสุด วันที่ 1 กุมภาพันธ์ 2563 เข้าถึงได้จาก https://ajthiti.gitbook.io/swift/string เงื่อนใขในการใช้งาน This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
Last updated
Was this helpful?