Porównanie języków programowania (stringi)
To porównanie języków programowania (łańcuchów) porównuje cechy struktur danych ciągów lub przetwarzania ciągów tekstowych dla ponad 52 różnych języków programowania komputerowego .
Powiązanie
Różne języki używają różnych symboli dla operatora konkatenacji. Wiele języków używa symbolu „+”, chociaż kilka od niego odbiega.
Typowe warianty
Operator | Języki |
---|---|
+ | ALGOL 68 , BASIC , C++ , C# , Cobra , Dart , Eiffel , F# , Go , Java , JavaScript , Object Pascal , Objective-C , Pascal , Python , Ruby , Rust , Scala , Swift , Turing , Windows PowerShell , Ya |
++ | Erlang , Haskell |
$+ | Język skryptowy mIRC |
& | Ada , AppleScript , COBOL (tylko dla literałów), Curl , FreeBASIC , Excel , Nim , Seed7 , VHDL , Visual Basic , Visual Basic .NET |
nconc | pospolity LISP |
. | Autohotkey, Maple (do wersji 5), Perl , PHP |
~ | D , Raku |
|| | Icon , Maple (od wersji 6), PL/I , Rexx , Standard SQL |
<> | Matematyka , język Wolframa |
.. | Lua |
: | Wybierz podstawowe |
, | APL , język programowania J , Smalltalk |
^ | F# , OCaml , rc , standardowa ML |
// | Fortran |
* | Julia |
Unikalne warianty
- Awk używa pustego łańcucha: dwa sąsiadujące ze sobą wyrażenia są łączone. Nazywa się to zestawieniem . Powłoki systemu Unix mają podobną składnię. Rexx używa tej składni do konkatenacji, w tym spacji pośredniej.
-
C (wraz z Pythonem) umożliwia zestawienie literałów łańcuchowych, jednak w przypadku łańcuchów przechowywanych jako tablice znaków należy użyć funkcji strcat
.
-
COBOL używa instrukcji
STRING
do łączenia zmiennych łańcuchowych. -
MATLAB i Octave używają składni „
[xy]
” do łączenia x i y. -
Visual Basic i Visual Basic .NET mogą również używać znaku „
+
”, ale istnieje ryzyko niejednoznaczności, jeśli ciąg reprezentujący liczbę i liczbę są razem. -
Microsoft Excel dopuszcza zarówno „
&
”, jak i funkcję „=CONCATENATE(X,Y)
”. -
Rust ma
konkat!
makro iformat!
makro, z których to drugie jest najbardziej rozpowszechnione w całej dokumentacji i przykładach.
Literały łańcuchowe
W tej sekcji porównano style deklarowania literału łańcuchowego .
Cytowane interpolowane
Wyrażenie jest „interpolowane” do łańcucha, gdy kompilator/interpreter ocenia je i wstawia wynik w jego miejsce.
Składnia | Języki) |
---|---|
$"cześć, {imię}"
|
C#, Visual Basic .NET |
"Witaj, $imię!"
|
Bourne Shell , Dart, Perl, PHP, Windows PowerShell |
qq(Witaj, $imię!)
|
Perl (alternatywny) |
"Cześć, {$imię}!"
|
PHP (alternatywa) |
"Cześć, #{imię}!"
|
CoffeeScript, Ruby |
%Q(Witaj, #{imię}!)
|
Rubin (alternatywny) |
(format t „Cześć, ~A”)
|
pospolity LISP |
`Cześć, ${imię}!`
|
JavaScript (ECMAScript 6) |
"Witaj, \(imię)!"
|
Szybki |
f'Cześć, {imię}!'
|
Pyton |
Uciekły cytaty
Cudzysłowy „Escaped” oznaczają, że symbol „flagi” jest używany do ostrzeżenia, że znak po fladze jest używany w łańcuchu, a nie na końcu łańcucha.
Składnia | Języki) |
---|---|
"Powiedziałem \"Witaj, świecie!\""
|
C, C++, C#, D, Dart, F#, Java, JavaScript, Mathematica, Ocaml, Perl, PHP, Python, Rust, Swift, Wolfram Language, Ya |
'Powiedziałem \'Witaj, świecie!\''
|
CoffeeScript, Dart (alternatywnie), JavaScript (alternatywnie), Python (alternatywnie) |
„Powiedziałem: „Witaj, świecie!””
|
Windows Powershell |
"Powiedziałem ^"Witaj, świecie!^""
|
REBOL |
{Powiedziałem "Witaj, świecie!"}
|
REBOL (alternatywa) |
„Powiedziałem: %„Witaj, świecie!%””
|
Eiffla |
!"Powiedziałem \"Witaj, świecie!\""
|
FreeBASIC |
r#"Powiedziałem "Witaj, świecie!""#
|
Rdza (alternatywna) |
Podwójne cytowanie
„Podwójny cudzysłów” oznacza, że ilekroć w łańcuchu używany jest cudzysłów, jest on używany dwukrotnie, a jeden z nich jest odrzucany, a następnie pojedynczy cudzysłów jest używany w ciągu.
Składnia | Języki) |
---|---|
„Powiedziałem: „Witaj, świecie!””
|
Ada, ALGOL 68, COBOL, Excel, Fortran, FreeBASIC, Visual Basic (.NET) |
'Powiedziałem ''Witaj, świecie!'''
|
APL, COBOL, Fortran, Object Pascal, Pascal, rc, Smalltalk, SQL |
Cytowane na surowo
„Surowy” oznacza, że kompilator traktuje każdy znak w obrębie literału dokładnie tak, jak został napisany, bez przetwarzania jakichkolwiek znaków ucieczki lub interpolacji.
Składnia | Języki) |
---|---|
'Witaj świecie!'
|
APL, Bourne Shell, Fortran, Object Pascal, Pascal, Perl, PHP, Pick Basic, Ruby, Smalltalk, Windows PowerShell |
q(Witaj, świecie!)
|
Perl (alternatywny) |
%q(Witaj, świecie!)
|
Rubin (alternatywny) |
R „(Witaj, świecie!)”
|
C++11 |
@"Witaj świecie!"
|
C#, F# |
r „Witaj, świecie!”
|
Cobra, D, Dart, Python, Rust |
r'Witaj, świecie!'
|
Strzałka (alternatywna) |
"Witaj świecie!"
|
Cobol, FreeBASIC, Pick Basic |
`Witaj, świecie!`
|
D. Idź |
raw „Witaj, świecie!”
|
Scala |
String.raw`Witaj, świecie!`
|
JavaScript (ECMAScript 6) |
Ciąg wielowierszowy
Wiele języków ma składnię przeznaczoną specjalnie dla ciągów z wieloma wierszami. W niektórych z tych języków ta składnia to dokument tutaj lub „heredoc”: Token reprezentujący ciąg jest umieszczany w środku wiersza kodu, ale kod jest kontynuowany po początkowym tokenie, a treść ciągu nie pojawia się, dopóki następna linia. W innych językach treść ciągu rozpoczyna się natychmiast po tokenie początkowym, a kod jest kontynuowany po terminatorze literału łańcuchowego.
Składnia | Tutaj dokument | Języki) |
---|---|---|
< |
Tak | Bourne Shell, Perl, PHP, Ruby |
<< |
Tak | PHP |
@" Mam wiele rzeczy do powiedzenia, a tak mało czasu, aby je powiedzieć "@ |
NIE | Windows Powershell |
„[Mam wiele rzeczy do powiedzenia, a tak mało czasu, aby je powiedzieć]” |
NIE | Eiffla |
""" Mam wiele rzeczy do powiedzenia, a tak mało czasu, aby je powiedzieć """ |
NIE | CoffeeScript, Dart, Groovy, Kotlin, Python, Swift |
„Mam wiele rzeczy do powiedzenia, a tak mało czasu, aby je powiedzieć” |
NIE | Rust (wszystkie ciągi są wielowierszowe), Visual Basic .NET (wszystkie ciągi są wielowierszowe) |
r„Mam wiele rzeczy do powiedzenia, a tak mało czasu, aby je powiedzieć” |
NIE | Rdza |
[[ Mam wiele rzeczy do powiedzenia, a tak mało czasu, aby je powiedzieć ]] |
NIE | Lua |
` Mam wiele rzeczy do powiedzenia, a tak mało czasu, aby je powiedzieć ` |
NIE | JavaScript (ECMAScript 6) |
Unikalne warianty cytowania
Składnia | Nazwa wariantu | Języki) |
---|---|---|
13HWitaj, świecie!
|
Notacja Holleritha | Fortran 66 |
(wcięcie z białymi znakami) | Wcięty spacjami i znakami nowej linii | YAML |
Notatki
-
1. ^
String.raw``
nadal przetwarza interpolację łańcuchów.