อ่าน 1 นาที
การเปรียบเทียบภาษาโปรแกรม (สตริง)
การเปรียบเทียบภาษาโปรแกรม (สตริง)นี้เปรียบเทียบคุณสมบัติของโครงสร้างข้อมูลสตริง หรือ การประมวลผล ข้อความสตริง สำหรับ ภาษาโปรแกรมคอมพิวเตอร์ต่างๆ มากกว่า 52 ภาษา
การเปรียบเทียบภาษาโปรแกรม (สตริง)
การเปรียบเทียบภาษาโปรแกรม (สตริง)นี้เปรียบเทียบคุณสมบัติของโครงสร้างข้อมูลสตริง หรือ การประมวลผล ข้อความสตริง สำหรับ ภาษาโปรแกรมคอมพิวเตอร์ต่างๆ มากกว่า 52 ภาษา
การต่อกัน
ภาษาโปรแกรมแต่ละภาษาใช้สัญลักษณ์ที่แตกต่างกันสำหรับตัวดำเนินการเชื่อมต่อข้อความ หลายภาษาใช้สัญลักษณ์ "+" แต่บางภาษาก็อาจแตกต่างออกไป
รูปแบบทั่วไป
| ผู้ปฏิบัติงาน | ภาษา |
|---|---|
| + | ALGOL 68 , BASIC , C++ , C# , Cobra , Dart , Eiffel , F# , Go , Java , JavaScript , Object Pascal , Pascal , Python , Ruby , Rust , Scala , Swift , Turing , Windows PowerShell , Ya |
| ++ | เอล์ม , เออร์ลัง , ฮัสเคลล์ |
| $+ | ภาษาสคริปต์ mIRC |
| & | Ada , AppleScript , COBOL (สำหรับค่าคงที่เท่านั้น), Curl , Excel , FreeBASIC , HyperTalk , Nim , Seed7 , VHDL , Visual Basic , Visual Basic (.NET) |
| เชื่อมต่อ | ลิสปาร์กทั่วไป |
| . | Autohotkey, Maple (เวอร์ชันไม่เกิน 5), Perl , PHP |
| ~ | D , Raku , Symfony (ส่วนประกอบภาษาการแสดงออก) |
| || | ไอคอน , เมเปิล (ตั้งแต่เวอร์ชัน 6), PL/I , Rexx , SQLมาตรฐาน |
| <> | Mathematica , Wolfram Language , Elixir |
| ... | ลัว |
| : | เลือกพื้นฐาน |
| , | เอพีแอลเจสมอลล์ทอล์ก |
| ^ | F# , OCaml , rc , Standard ML |
| // | ฟอร์ทราน |
| * | จูเลีย |
รูปแบบเฉพาะ
- AWKใช้สตริงว่าง: การนำนิพจน์สองนิพจน์ที่อยู่ติดกันมาต่อกัน วิธีนี้เรียกว่าการวางชิดกัน (juxtaposition ) เชลล์ Unixก็มีไวยากรณ์ที่คล้ายกันRexxใช้ไวยากรณ์นี้สำหรับการต่อนิพจน์โดยรวมถึงช่องว่างคั่นกลางด้วย
- C (รวมถึงPythonและDart [ 1 ] ) อนุญาตให้วางสตริงลิเทอรัลไว้ข้างๆ กันได้ อย่างไรก็ตาม สำหรับสตริงที่จัดเก็บเป็นอาร์เรย์อักขระ จะต้องใช้ฟังก์ชัน
strcat - COBOLใช้
STRINGคำสั่งนี้เพื่อเชื่อมต่อตัวแปรสตริงเข้าด้วยกัน - MATLABและOctaveใช้ไวยากรณ์ "
[x y]" เพื่อเชื่อมต่อค่า x และ y เข้าด้วยกัน - Visual BasicและVisual Basic .NETก็สามารถใช้
+เครื่องหมาย " " ได้เช่นกัน แต่มีความเสี่ยงที่จะเกิดความกำกวมหากสตริงที่แทนตัวเลขและตัวเลขอยู่ด้วยกัน - Microsoft Excelอนุญาตให้ใช้ทั้ง "
&" และฟังก์ชัน "=CONCATENATE(X,Y)" - Rustมี
concat!มาโคร `init` และformat!`init` ซึ่งมาโคร `init` เป็นแบบที่พบได้บ่อยที่สุดในเอกสารและตัวอย่างต่างๆ
สตริงลิเทอรัล
ส่วนนี้จะเปรียบเทียบรูปแบบการประกาศค่าสตริงแบบต่างๆ
อ้างอิงที่แทรกไว้
นิพจน์จะถูก "แทรก" เข้าไปในสตริงเมื่อคอมไพเลอร์/อินเตอร์พรีเตอร์ประเมินค่าและแทรกผลลัพธ์ลงในตำแหน่งเดิม
| ไวยากรณ์ | ภาษา |
|---|---|
$"hello, {name}" | C#, Visual Basic .NET |
"Hello, $name!" | Bourne shell , Dart, Perl, PHP, Windows PowerShell |
qq(Hello, $name!) | ภาษาเพิร์ล (ทางเลือกอื่น) |
"Hello, {$name}!" | พีเอชพี (ทางเลือก) |
"Hello, #{name}!" | คอฟฟี่สคริปต์, รูบี้, เอลิกเซอร์ |
%Q(Hello, #{name}!) | รูบี้ (ทางเลือกอื่น) |
(format nil "Hello, ~A" name) | ลิสปาร์กทั่วไป |
`Hello, ${name}!` | JavaScript (ECMAScript 6) |
"Hello, \(name)!" | สวิฟต์ |
f'Hello, {name}!' | ไพธอน |
เครื่องหมายคำพูดที่หลุดออกมา
เครื่องหมายอัญประกาศที่มีเครื่องหมาย "หลีกเลี่ยง" หมายความว่ามีการใช้สัญลักษณ์ "ธง" เพื่อเตือนว่าอักขระหลังธงนั้นถูกใช้ในสตริง ไม่ใช่ส่วนท้ายของสตริง
| ไวยากรณ์ | ภาษา |
|---|---|
"I said \"Hello, world!\"" | C, C++, C#, D, Dart, F#, Java, JavaScript, Mathematica, OCaml, Perl, PHP, Python, Rust, Swift, Wolfram Language, Ya |
'I said \'Hello, world!\'' | CoffeeScript, Dart (ทางเลือก), JavaScript (ทางเลือก), Python (ทางเลือก) |
"I said `"Hello, world!`"" | วินโดวส์ พาวเวอร์เชลล์ |
"I said ^"Hello, world!^"" | เรโบล |
{I said "Hello, world!"} | รีโบล (ทางเลือกอื่น) |
"I said, %"Hello, World!%"" | หอไอเฟล |
!"I said \"Hello, world!\"" | ฟรีเบสิก |
r#"I said "Hello, world!""# | สนิม (ทางเลือกอื่น) |
R"("I said "Hello, world!")" | ซี++ (ทางเลือก) |
การเสนอราคาแบบคู่
"การใช้เครื่องหมายอัญประกาศคู่" หมายความว่า เมื่อใดก็ตามที่มีการใช้เครื่องหมายอัญประกาศในสตริง จะใช้เครื่องหมายอัญประกาศนั้นสองครั้ง โดยครั้งหนึ่งจะถูกตัดทิ้ง และอีกครั้งจะใช้เครื่องหมายอัญประกาศเดี่ยวในสตริงนั้น
| ไวยากรณ์ | ภาษา |
|---|---|
"I said ""Hello, world!""" | Ada, ALGOL 68, COBOL, Excel, Fortran, FreeBASIC, Visual Basic (.NET) |
'I said ''Hello, world!''' | APL, COBOL, Fortran, Object Pascal, Pascal, rc, Smalltalk, SQL |
อ้างอิงดิบ
"Raw" หมายความว่าคอมไพเลอร์จะประมวลผลอักขระทุกตัวภายในข้อความต้นฉบับตามที่เขียนไว้ทุกประการ โดยไม่ประมวลผลอักขระหลีกหรือการแทรกค่าใดๆ
| ไวยากรณ์ | ภาษา |
|---|---|
'Hello, world!' | APL, Bourne shell, Fortran, Object Pascal, Pascal, Perl, PHP, Pick Basic, Ruby, Smalltalk, Windows PowerShell |
q(Hello, world!) | ภาษาเพิร์ล (ทางเลือกอื่น) |
%q(Hello, world!) | รูบี้ (ทางเลือกอื่น) |
R"(Hello, world!)" | ซี++11 |
@"Hello, world!" | ซี#, เอฟ# |
r"Hello, world!" | Cobra, D, Dart, Python, Rust |
r'Hello, world!' | ลูกดอก (ทางเลือก) |
"Hello, world!" | โคบอล, ฟรีเบสิก, พิกเบสิก |
`Hello, world!` | ดี, โก |
raw"Hello, world!" | สกาล่า |
String.raw`Hello, World!` | JavaScript (ECMAScript 6) [1] |
สตริงหลายบรรทัด
ภาษาโปรแกรมหลายภาษามีไวยากรณ์เฉพาะที่ออกแบบมาสำหรับสตริงที่มีหลายบรรทัด ในบางภาษา ไวยากรณ์นี้เรียกว่าhere documentหรือ "heredoc": โทเค็นที่แทนสตริงจะถูกวางไว้ตรงกลางบรรทัดของโค้ด แต่โค้ดจะดำเนินต่อไปหลังจากโทเค็นเริ่มต้น และเนื้อหาของสตริงจะไม่ปรากฏจนกว่าจะถึงบรรทัดถัดไป ในภาษาอื่นๆ เนื้อหาของสตริงจะเริ่มต้นทันทีหลังจากโทเค็นเริ่มต้น และโค้ดจะดำเนินต่อไปหลังจากตัวจบสตริง
| ไวยากรณ์ | นี่คือเอกสาร | ภาษา |
|---|---|---|
<<EOF ฉันมีเรื่องจะพูดเยอะเลย และมีเวลาน้อยเหลือเกินที่จะพูดสิ่งเหล่านั้น อีโอเอฟ | ใช่ | บอร์นเชลล์, เพิร์ล, รูบี้ |
<<<EOF ฉันมีเรื่องจะพูดเยอะเลย และมีเวลาน้อยเหลือเกินที่จะพูดสิ่งเหล่านั้น อีโอเอฟ | ใช่ | พีพี |
@" ฉันมีเรื่องจะพูดเยอะเลย และมีเวลาน้อยเหลือเกินที่จะพูดสิ่งเหล่านั้น "@ | เลขที่ | วินโดวส์ พาวเวอร์เชลล์ |
"[ ฉันมีเรื่องจะพูดเยอะเลย และมีเวลาน้อยเหลือเกินที่จะพูดสิ่งเหล่านั้น ]" | เลขที่ | หอไอเฟล |
""" ฉันมีเรื่องจะพูดเยอะเลย และมีเวลาน้อยเหลือเกินที่จะพูดสิ่งเหล่านั้น """ | เลขที่ | คอฟฟี่สคริปต์, ดาร์ท, กรูวี, จาวา, โคทลิน, ไพธอน, สวิฟต์ |
" ฉันมีเรื่องจะพูดเยอะเลย และมีเวลาน้อยเหลือเกินที่จะพูดสิ่งเหล่านั้น " | เลขที่ | Common Lisp (ข้อความทั้งหมดเป็นแบบหลายบรรทัด), Rust (ข้อความทั้งหมดเป็นแบบหลายบรรทัด), Visual Basic .NET (ข้อความทั้งหมดเป็นแบบหลายบรรทัด) |
R"( ฉันมีเรื่องจะพูดเยอะเลย และมีเวลาน้อยเหลือเกินที่จะพูดสิ่งเหล่านั้น )" | เลขที่ | ซี++ |
ร" ฉันมีเรื่องจะพูดเยอะเลย และมีเวลาน้อยเหลือเกินที่จะพูดสิ่งเหล่านั้น " | เลขที่ | สนิม |
[[ ฉันมีเรื่องจะพูดเยอะเลย และมีเวลาน้อยเหลือเกินที่จะพูดสิ่งเหล่านั้น ]] | เลขที่ | ลัว |
` ฉันมีเรื่องจะพูดเยอะเลย และมีเวลาน้อยเหลือเกินที่จะพูดสิ่งเหล่านั้น ` | เลขที่ | JavaScript (ECMAScript 6) |
รูปแบบการอ้างอิงที่ไม่ซ้ำใคร
| ไวยากรณ์ | ชื่อรูปแบบ | ภาษา |
|---|---|---|
13HHello, world! | สัญกรณ์โฮลเลอริธ | ฟอร์ทราน 66 |
| (เว้นวรรคโดยเว้นระยะ) | เว้นวรรคและขึ้นบรรทัดใหม่ | ยาเอ็มแอล |
หมายเหตุ
- 1. ^
String.raw``ยังคงประมวลผลการแทรกสตริงอยู่
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การเปรียบเทียบภาษาโปรแกรม (สตริง)
การเปรียบเทียบภาษาโปรแกรม (สตริง)นี้เปรียบเทียบคุณสมบัติของโครงสร้างข้อมูลสตริง หรือ การประมวลผล ข้อความสตริง สำหรับ ภาษาโปรแกรมคอมพิวเตอร์ต่างๆ มากกว่า 52 ภาษา
การต่อกัน
ภาษาโปรแกรมแต่ละภาษาใช้สัญลักษณ์ที่แตกต่างกันสำหรับตัวดำเนินการเชื่อมต่อข้อความ หลายภาษาใช้สัญลักษณ์ "+" แต่บางภาษาก็อาจแตกต่างออกไป
รูปแบบทั่วไป
ผู้ปฏิบัติงาน ภาษา + ALGOL 68 , BASIC , C++ , C# , Cobra , Dart , Eiffel , F# , Go , Java , JavaScript , Object Pascal , Pascal , Python , Ruby , Rust , Scala , Swift , Turing , Windows PowerShell , Ya ++ เอล์ม , เออร์ลัง , ฮัสเคลล์ $+ ภาษาสคริปต์ mIRC & Ada...
รูปแบบเฉพาะ
AWK ใช้สตริงว่าง: การนำนิพจน์สองนิพจน์ที่อยู่ติดกันมาต่อกัน วิธีนี้เรียกว่า การวางชิดกัน (juxtaposition ) เชลล์ Unix ก็มีไวยากรณ์ที่คล้ายกัน Rexx ใช้ไวยากรณ์นี้สำหรับการต่อนิพจน์โดยรวมถึงช่องว่างคั่นกลางด้วย C (รวมถึง Python และ Dart [ 1 ] )...