อ่าน 2 นาที
สตริงว่าง
ในทฤษฎีภาษาเชิงรูปธรรมสตริงว่างหรือที่รู้จักกันในชื่อคำว่างหรือสตริงว่าง คือ สตริงเดียวที่มีความยาวเป็นศูนย์
สตริงว่าง
ในทฤษฎีภาษาเชิงรูปธรรมสตริงว่างหรือที่รู้จักกันในชื่อคำว่างหรือสตริงว่าง คือ สตริงเดียวที่มีความยาวเป็นศูนย์
ทฤษฎีเชิงรูปธรรม
ตามหลักการแล้ว สตริงคือลำดับอักขระ ที่จำกัดและเรียงลำดับ เช่น ตัวอักษร ตัวเลข หรือช่องว่าง สตริงว่างเป็นกรณีพิเศษที่ลำดับมีความยาวเป็นศูนย์ ดังนั้นจึงไม่มีสัญลักษณ์ใดๆ ในสตริง มีเพียงสตริงว่างเดียวเท่านั้น เพราะสตริงสองสตริงจะแตกต่างกันก็ต่อเมื่อมีความยาวต่างกันหรือมีลำดับสัญลักษณ์ต่างกันเท่านั้น ในการพิจารณาอย่างเป็นทางการ[ 1 ] สตริงว่างจะถูกแทนด้วยεหรือบางครั้งΛหรือλ
ไม่ควรสับสนระหว่างสตริงว่างกับภาษาว่าง∅ซึ่งเป็นภาษาเชิงรูปธรรม (กล่าวคือ เซตของสตริง) ที่ไม่มีสตริงใดๆ อยู่เลย แม้แต่สตริงว่างก็ตาม
สตริงว่างมีคุณสมบัติหลายประการ:
- |ε| = 0 ความยาวของสตริงเป็นศูนย์
- ε ⋅ s = s ⋅ ε = s สตริงว่างคือองค์ประกอบเอกลักษณ์ของ การดำเนินการ ต่อสตริงเซตของสตริงทั้งหมดก่อให้เกิดโมโนอิดอิสระโดยสัมพันธ์กับ ⋅ และ ε
- ε R = ε การกลับลำดับของสตริงว่างจะได้สตริงว่างเช่นกัน ดังนั้นสตริงว่างจึงเป็นพาลินโดรม
- ข้อความที่กล่าวถึงอักขระทั้งหมดในสตริงนั้นเป็นจริงโดยปริยาย
- สตริงว่างจะอยู่ก่อนสตริงอื่นใดตามลำดับพจนานุกรมเนื่องจากเป็นสตริงที่สั้นที่สุด[ 2 ]
ในไวยากรณ์ที่ไม่ขึ้นกับบริบทกฎการผลิตที่อนุญาตให้สัญลักษณ์สร้างสตริงว่างได้เรียกว่า การผลิตแบบ ε และสัญลักษณ์นั้นเรียกว่า "สามารถเป็นค่าว่างได้" (nullable)
ใช้ในภาษาโปรแกรม
ในภาษาโปรแกรม ส่วนใหญ่ คำว่า "สตริง" มักหมายถึงอินสแตนซ์ของชนิดข้อมูลดังนั้นจึงเป็นแนวคิดที่แตกต่างจากในทฤษฎีเชิงรูปธรรม สตริงเหล่านี้มักถูกจัดเก็บไว้ในที่อยู่หน่วยความจำ (ตำแหน่ง) ที่แตกต่างกัน และจึงมีเอกลักษณ์เฉพาะตัว ดังนั้น ตัวแทนของสตริงเชิงรูปธรรมเดียวกัน (เช่น สตริงว่าง) อาจถูกจัดเก็บไว้ในสองตำแหน่งขึ้นไปในหน่วยความจำ และสามารถนำมาใช้เป็นชื่อของสตริงว่างเชิงรูปธรรมได้
ด้วยวิธีนี้ อาจมีตัวแทนของสตริงว่างหลายตัวในหน่วยความจำ ซึ่งแตกต่างจากคำจำกัดความทางทฤษฎีอย่างเป็นทางการที่ว่ามีสตริงว่างที่เป็นไปได้เพียงตัวเดียวเท่านั้น อย่างไรก็ตาม "ฟังก์ชันเปรียบเทียบสตริง" จะแสดงให้เห็นว่าตัวแทนเหล่านี้ทั้งหมดเท่ากัน
แม้แต่สตริงที่มีความยาวเป็นศูนย์ก็อาจต้องการหน่วยความจำในการจัดเก็บ ขึ้นอยู่กับรูปแบบที่ใช้ ในภาษาโปรแกรมส่วนใหญ่ สตริงว่างจะแตกต่างจากค่าอ้างอิงว่าง (หรือตัวชี้ว่าง) เพราะค่าอ้างอิงว่างชี้ไปยังไม่มีอะไรเลย ไม่แม้แต่สตริงว่าง สตริงว่างเป็นสตริงที่ถูกต้อง ซึ่งการดำเนินการกับสตริงส่วนใหญ่ควรใช้งานได้ ภาษาบางภาษาจัดการกับสิ่งต่อไปนี้บางส่วนหรือทั้งหมดในลักษณะที่คล้ายคลึงกัน: สตริงว่าง ค่าอ้างอิงว่าง จำนวนเต็ม 0 จำนวนทศนิยม 0 ค่าบูลีนfalse อักขระASCII NUL หรือค่าอื่นๆ ที่คล้ายกัน
โดยปกติแล้ว สตริงว่างจะถูกแสดงในลักษณะเดียวกับสตริงอื่นๆ ในการใช้งานที่มีอักขระสิ้นสุดสตริง ( สตริงที่ลงท้ายด้วยค่าว่างหรือบรรทัดข้อความธรรมดา) สตริงว่างจะถูกระบุโดยการใช้อักขระสิ้นสุดนั้นทันที
ในภาษาโปรแกรมต่างๆ มี ฟังก์ชัน เมธอด มาโคร หรือสำนวน ที่แตกต่างกัน สำหรับการตรวจสอบว่าสตริงว่างหรือไม่
| การแสดงผลแบบ λ | ภาษาโปรแกรม |
|---|---|
"" | C , C# , C++ , Go , Haskell , Java , JavaScript , Julia , Lua , M , Objective-C (ในรูปแบบสตริง C), OCaml , Perl , PHP , PowerShell , Python , Ruby , Scala , Standard ML , Swift , Tcl , Visual Basic .NET |
'' | APL , Delphi , JavaScript , Lua , MATLAB , Pascal , Perl , PHP , PowerShell , Python , R , Ruby , Smalltalk , SQL |
character(0) | R [ 3 ] |
{'\0'} | C , C++ , Objective-C (ในรูปแบบสตริง C) |
new String()(จากjava.lang.StringหรือSystem.String) | Java , C# |
string()(จากstd::string) | ซี++ |
""s | C++ (ตั้งแต่มาตรฐานปี 2014 ) |
@"" | ออบเจ็กทีฟซี (ในฐานะNSStringวัตถุคงที่) |
[NSString string] | ออบเจ็กทีฟซี (ในรูปแบบอ็อบเจ็กต์ใหม่NSString) |
q(), qq() | เพิร์ล |
str()[ 4 ]""""""r""u"" | ไพธอน |
%{}%() | ทับทิม |
String::new()(จากstd::string::String) [ 5 ] | สนิม |
String.Empty(จากSystem.String) | C# , Visual Basic .NET |
String.make 0 '-' | โอแคมล์ |
{} | ทีซีแอล |
[[]] | ลัว |
“”
| พาวเวอร์เชลล์ |
.byte 0
| เอ64 |
การแสดงผลของสตริงว่าง
สตริงว่างเป็นการแสดงค่าศูนย์ ที่ถูกต้องตามหลักไวยากรณ์ ในระบบเลขฐาน (ไม่ว่าจะเป็นฐานใดก็ตาม) ซึ่งไม่มีเลขศูนย์นำหน้าเนื่องจากสตริงว่างไม่มีรูปแบบการแสดงผลที่เป็นมาตรฐานนอกเหนือจากทฤษฎีภาษาเชิงรูปธรรม จึงนิยมแทนเลขศูนย์ด้วยตัวเลขทศนิยม0เพียง ตัวเดียว
พื้นที่หน่วยความจำที่เติมด้วยศูนย์ ซึ่งถูกตีความว่าเป็นสตริงที่ลงท้ายด้วยค่าว่างจะเป็นสตริงว่างเปล่า
บรรทัดว่างจะแสดงสตริงว่าง ซึ่งอาจเกิดขึ้นจาก อักขระขึ้นบรรทัดใหม่ (EOL) สองตัวติดกัน ดังที่มักเกิดขึ้นในไฟล์ข้อความบางครั้งมีการใช้ในโปรแกรม ประมวลผลข้อความเพื่อแยกย่อหน้าเช่น ในMediaWiki
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ สตริงว่าง
ในทฤษฎีภาษาเชิงรูปธรรมสตริงว่างหรือที่รู้จักกันในชื่อคำว่างหรือสตริงว่าง คือ สตริงเดียวที่มีความยาวเป็นศูนย์
ทฤษฎีเชิงรูปธรรม
ตามหลักการแล้ว สตริงคือลำดับ อักขระ ที่จำกัดและเรียงลำดับ เช่น ตัวอักษร ตัวเลข หรือช่องว่าง สตริงว่างเป็นกรณีพิเศษที่ลำดับมีความยาวเป็นศูนย์ ดังนั้นจึงไม่มีสัญลักษณ์ใดๆ ในสตริง มีเพียงสตริงว่างเดียวเท่านั้น...
ใช้ในภาษาโปรแกรม
ใน ภาษาโปรแกรม ส่วนใหญ่ คำว่า "สตริง" มักหมายถึงอินสแตนซ์ของ ชนิดข้อมูล ดังนั้นจึงเป็นแนวคิดที่แตกต่างจากในทฤษฎีเชิงรูปธรรม สตริงเหล่านี้มักถูกจัดเก็บไว้ใน ที่อยู่หน่วยความจำ (ตำแหน่ง) ที่แตกต่างกัน และจึงมีเอกลักษณ์เฉพาะตัว ดังนั้น...
การแสดงผลของสตริงว่าง
สตริงว่างเป็นการแสดง ค่าศูนย์ ที่ถูกต้องตามหลักไวยากรณ์ ใน ระบบเลขฐาน (ไม่ว่าจะเป็นฐานใดก็ตาม) ซึ่งไม่มี เลขศูนย์นำหน้า เนื่องจากสตริงว่างไม่มีรูปแบบการแสดงผลที่เป็นมาตรฐานนอกเหนือจากทฤษฎีภาษาเชิงรูปธรรม จึงนิยมแทนเลขศูนย์ด้วย ตัวเลขทศนิยม 0 เพียง ตัวเดียว