В этой статье не процитировать какие - либо источники . ( февраль 2009 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
Сравнение языков программирования |
---|
|
|
|
Сравнение отдельных языков
|
В этом сравнении языков программирования (строк) сравниваются особенности строковых структур данных или обработки текстовых строк для более чем 52 различных языков программирования .
Конкатенация [ править ]
В разных языках используются разные символы для оператора конкатенации. Во многих языках используется символ «+», хотя в некоторых он отличается.
Общие варианты [ править ]
Оператор | Языки |
---|---|
+ | АЛГОЛ 68 , BASIC , C ++ , C # , Cobra , Pascal , Object Pascal , Eiffel , Go , JavaScript , Java , Python , Turing , Ruby , Rust , Windows PowerShell , Objective-C , Swift , F # , Scala , Ya. |
++ | Хаскелл , Эрланг |
$ + | Язык сценариев mIRC |
& | Ada , AppleScript , COBOL (только для литералов), Curl , Seed7 , VHDL , Visual Basic , Visual Basic .NET , Excel , FreeBASIC , Nim |
nconc | Common Lisp |
. | Perl , PHP и Maple (до версии 5), Autohotkey |
~ | Раку и Д |
|| | Icon , Standard SQL , PL / I , Rexx и Maple (начиная с версии 6) |
<> | Математика , язык Wolfram Language |
.. | Lua |
: | Выбрать базовый |
, | Язык программирования J , Smalltalk , APL |
^ | OCaml , Стандартный ML , F # , RC |
// | Фортран |
* | Юлия |
Уникальные варианты [ править ]
- Awk использует пустую строку: два выражения, смежных друг с другом, объединяются. Это называется сопоставлением . Оболочки Unix имеют похожий синтаксис. Rexx использует этот синтаксис для конкатенации, включая промежуточный пробел.
- C (вместе с Python) допускает сопоставление строковых литералов, однако для строк, хранящихся в виде массивов символов , функция должна использоваться.
strcat
- COBOL использует
STRING
оператор для объединения строковых переменных. - MATLAB и Octave используют синтаксис "
[x y]
" для объединения x и y. - Visual Basic и Visual Basic .NET также могут использовать
+
знак « », но с риском двусмысленности, если строка, представляющая число, находится вместе. - Microsoft Excel позволяет как "
&
", так и функцию "=CONCATENATE(X,Y)
". - В Rust есть
concat!
макрос иformat!
макрос, из которых последний является наиболее распространенным в документации и примерах.
Строковые литералы [ править ]
В этом разделе сравниваются стили для объявления строкового литерала .
Цитируется с интерполяцией [ править ]
Выражение «интерполируется» в строку, когда компилятор / интерпретатор оценивает его и вставляет результат на его место.
Синтаксис | Язык (и) |
---|---|
$"hello, {name}" | C #, Visual Basic .NET |
"Hello, $name!" | Оболочка Борна , Perl, PHP, Windows PowerShell |
qq(Hello, $name!) | Perl (альтернативный) |
"Hello, {$name}!" | PHP (альтернативный) |
"Hello, #{name}!" | CoffeeScript, Рубин |
%Q(Hello, #{name}!) | Рубин (альтернативный) |
(format t "Hello, ~A" name) | Common Lisp |
`Hello, ${name}!` | JavaScript (ECMAScript 6) |
"Hello, \(name)!" | Быстрый |
f'Hello, {name}!' | Python |
Экранированные цитаты [ править ]
«Экранированные» кавычки означают, что символ «флаг» используется для предупреждения о том, что в строке используется символ после флага, а не в конце строки.
Синтаксис | Язык (и) |
---|---|
"I said \"Hello, world!\"" | C, C ++, C #, D, F #, Java, JavaScript, Mathematica, Ocaml, Perl, PHP, Python, Rust, Swift, язык Wolfram Language, Ya. |
'I said \'Hello, world!\'' | CoffeeScript, JavaScript (альтернативный), Python (альтернативный) |
"I said `"Hello, world!`"" | Windows Powershell |
"I said ^"Hello, world!^"" | REBOL |
{I said "Hello, world!"} | REBOL (альтернативный) |
"I said, %"Hello, World!%"" | Эйфелева |
!"I said \"Hello, world!\"" | FreeBASIC |
r#"I said "Hello, world!""# | Ржавчина (альтернатива) |
Двойное цитирование [ править ]
«Двойное цитирование» означает, что всякий раз, когда кавычка используется в строке, она используется дважды, и одна из них отбрасывается, а затем в строке используется одинарная кавычка.
Синтаксис | Язык (и) |
---|---|
"I said ""Hello, world!""" | Ада, АЛГОЛ 68, Excel, Фортран, Visual Basic (.NET), FreeBASIC, COBOL |
'I said ''Hello, world!''' | Фортран, rc, COBOL, SQL, Pascal, Object Pascal, APL, Smalltalk |
Цитируется в необработанном виде [ править ]
"Необработанный" означает, что компилятор обрабатывает каждый символ внутри литерала точно так, как он написан, без обработки каких-либо экранирований или интерполяций.
Синтаксис | Язык (и) |
---|---|
'Hello, world!' | APL, оболочка Борна, Фортран, Object Pascal, Pascal, Perl, PHP, Pick Basic, Ruby, Windows PowerShell, Smalltalk |
q(Hello, world!) | Perl (альтернативный) |
%q(Hello, world!) | Рубин (альтернативный) |
R"(Hello, world!)" | C ++ 11 |
@"Hello, world!" | C #, F # |
r"Hello, world!" | Кобра, D, Питон, Ржавчина |
"Hello, world!" | Cobol, FreeBASIC, Pick Basic |
`Hello, world!` | D, иди |
raw"Hello, world!" | Scala |
String.raw`Hello, World!` | JavaScript (ECMAScript 6) [1] |
Многострочная строка [ править ]
Многие языки имеют синтаксис, специально предназначенный для многострочных строк. В некоторых из этих языков этот синтаксис является здесь документом или «heredoc»: токен, представляющий строку, помещается в середину строки кода, но код продолжается после начального токена, и содержимое строки не отображается до тех пор, пока следующая строка. В других языках содержимое строки начинается сразу после начального токена, а код продолжается после терминатора строкового литерала.
Синтаксис | Здесь документ | Язык (и) |
---|---|---|
<< EOFМне есть что сказатьи так мало времени, чтобы сказать ихEOF | да | Оболочка Борна, Perl, PHP, Ruby |
<<< EOFМне есть что сказатьи так мало времени, чтобы сказать ихEOF | да | PHP |
@ "Мне есть что сказатьи так мало времени, чтобы сказать их"@ | Нет | Windows Powershell |
"[Мне есть что сказатьи так мало времени, чтобы сказать их] " | Нет | Эйфелева |
"" "Мне есть что сказатьи так мало времени, чтобы сказать их"" " | Нет | CoffeeScript, Python, Groovy, Swift, Котлин |
"Мне есть что сказатьи так мало времени, чтобы сказать их" | Нет | Visual Basic .NET (все строки многострочные), Rust (все строки многострочные) |
р"Мне есть что сказатьи так мало времени, чтобы сказать их" | Нет | Ржавчина |
[[Мне есть что сказатьи так мало времени, чтобы сказать их]] | Нет | Lua |
`Мне есть что сказатьи так мало времени, чтобы сказать их` | Нет | JavaScript (ECMAScript 6) |
Уникальные варианты цитирования [ править ]
Синтаксис | Название варианта | Язык (и) |
---|---|---|
13HHello, world! | Нотация Холлерита | Фортран 66 |
(с отступом пробелом) | С отступом от пробелов и новой строки | YAML |
Заметки [ править ]
- 1. ^ по-
String.raw``
прежнему обрабатывает строковую интерполяцию.
Ссылки [ править ]
- 1. ^ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw