Comparison of programming languages (strings)

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Lua error in package.lua at line 80: module 'strict' not found. Lua error in package.lua at line 80: module 'strict' not found. Lua error in package.lua at line 80: module 'strict' not found.

This comparison of programming languages (strings) compares the features of string data structures or text-string processing for over 52 various computer programming languages.

Concatenation

Different languages use different symbols for the concatenation operator. Many languages use the "+" symbol, though several deviate from this.

Common variants

Operator Languages
+ ALGOL 68, BASIC, C++, C#, Cobra, Pascal, Object Pascal, Eiffel, Go, JavaScript, Java, Python, Turing, Ruby, Windows PowerShell, Objective-C, F#, Scala, Ya
++ Haskell, Erlang
$+ mIRC Scripting Language
& Ada, AppleScript, COBOL (for literals only), Curl, Seed7, VHDL, Visual Basic, Excel, FreeBASIC
nconc Common Lisp
. Perl (before version 6), PHP, and Maple (up to version 5), Autohotkey
~ Perl 6 and D
|| Icon, Standard SQL, PL/I, Rexx, and Maple (from version 6)
<> Mathematica, Wolfram Language
.. Lua
, J programming language, Smalltalk
^ OCaml, Standard ML, F#, rc
// Fortran

Unique variants

  • Awk uses the empty string: two expressions adjacent to each other are concatenated. This is called juxtaposition. Unix shells have a similar syntax. Rexx uses this syntax for concatenation including an intervening space.
  • C (along with Python) allows juxtaposition for string literals, however, for strings stored as character arrays, the strcat function must be used.
  • COBOL uses the STRING statement to concatenate string variables.
  • MATLAB and Octave use the syntax "[x y]" to concatenate x and y.
  • Visual Basic Versions 1 to 6 can also use the "+" sign but, this leads to ambiguity if a string representing a number and a number is added together.
  • Microsoft Excel allows both "&" and the function "=CONCATENATE(X,Y)".

String literals

This section compares styles for declaring a string literal.

Quoted raw

"Raw" meaning that the interpreter/compiler does not recognize any variable or constant identifiers located inside the string and the content of the identifier will not replace the identifier in the string.

Syntax Language(s)
@"Hello, world!" C#, F#
"Hello, world!" Cobol, FreeBASIC, Java, JavaScript
r"Hello, world!" D, Python, Cobra
'Hello, world!' Fortran, JavaScript, Object Pascal, Pascal, Perl, PHP, Windows PowerShell, Smalltalk
`Hello, world!` D, Go
R"(Hello, world!)" C++11

Quoted interpolated

"Interpolated" means that the interpreter/compiler does recognize a variable or constant identifier located inside the string and the content of the identifier will replace the identifier in the string.

Syntax Language(s)
"Hello, $name!" PHP, Perl, Windows PowerShell, Bash shell
"Hello, {$name}!" PHP
"Hello, #{name}!" Ruby, CoffeeScript
(format t "Hello, ~A" name) Common Lisp
`Hello, ${name}!` JavaScript (ECMAScript 6)

Escaped quotes

"Escaped" quotes means that a 'flag' symbol is used to warn that the character after the flag is used in the string rather than ending the string.

Syntax Language(s)
"I said \"Hello, world!\"" C, C++, C#, D, F#, Java, Ocaml, Perl, PHP, Python, JavaScript, Mathematica, Wolfram Language, Ya
'I said ''Hello, world!''' Smalltalk
"I said `"Hello, world!`"" Windows Powershell
"I said ^"Hello, world!^"" REBOL
"I said, %"Hello, World!%"" Eiffel
!"I said \"Hello, world!\"" FreeBASIC

Dual quoting

"Dual quoting" means that whenever a quote is used in a string, it is used twice, and one of them is discarded and the single quote is then used within the string.

Syntax Language(s)
"I said ""Hello, world!""" Ada, ALGOL 68, Excel, Fortran, Visual Basic, FreeBASIC, COBOL
'I said ''Hello, world!''' Fortran, rc, COBOL, SQL, Pascal, Object Pascal
'I said "Hello, world!"' Smalltalk

Lua error in package.lua at line 80: module 'strict' not found.

Multiple quoting

Syntax Language(s)
q(I said "Hello, world!")

qq(I said "Hello, $name!")

Perl (raw & interpolated)
%Q(I said "Hello, world!")

%(I said "Hello, world!")

Ruby
{I said "Hello, world!"} REBOL

Here document

Syntax Language(s)
<<EOF
I have a lot of things to say
and so little time to say them
EOF
Bourne shell, Perl, PHP, Ruby
<<<EOF
I have a lot of things to say
and so little time to say them
EOF
PHP
@"
I have a lot of things to say
and so little time to say them
"@
Windows Powershell
"[
I have a lot of things to say
and so little time to say them
]"
Eiffel
"""
I have a lot of things to say
and so little time to say them
"""
CoffeeScript

Unique quoting variants

Syntax Variant name Language(s)
"""Hello, world!""" Triple quoting Python
13HHello, world! Hollerith notation Fortran 66
(indented with whitespace) Indented with whitespace and newlines YAML