กลับไปหน้าบทความ

อ่าน 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``ยังคงประมวลผลการแทรกสตริงอยู่
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Comparison_of_programming_languages_(strings)&oldid=1344087436 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การเปรียบเทียบภาษาโปรแกรม (สตริง)

การเปรียบเทียบภาษาโปรแกรม (สตริง)นี้เปรียบเทียบคุณสมบัติของโครงสร้างข้อมูลสตริง หรือ การประมวลผล ข้อความสตริง สำหรับ ภาษาโปรแกรมคอมพิวเตอร์ต่างๆ มากกว่า 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 ] )...