В формальной теории языка и компьютерном программировании конкатенация строк — это операция соединения строк символов конец в конец. Например, конкатенация «снега» и «шара» — это «снежный ком». В некоторых формализациях теории конкатенации , также называемых теорией струн, конкатенация строк — это примитивное понятие .
Во многих языках программирования конкатенация строк является бинарным инфиксным оператором , а в некоторых записывается без оператора. Это реализуется разными способами:
+
Пример из C#: "Hello, " + "World"
имеет значение "Hello, World"
..
в PHP, &
Visual Basic [1] и ||
SQL. [2] [3] Это имеет преимущество перед повторным использованием +
, так как позволяет неявно преобразовывать тип в строку."Hello, " "World"
имеет значение "Hello, World"
.В программировании конкатенация строк обычно происходит во время выполнения, поскольку значения строк обычно неизвестны до времени выполнения. Однако в случае строковых литералов значения известны во время компиляции, и, таким образом, конкатенация строк может быть выполнена во время компиляции, либо через конкатенацию строковых литералов , либо через сворачивание констант , что является потенциальной оптимизацией во время выполнения.
В формальной теории языков и сопоставлении с образцом (включая регулярные выражения ) операция конкатенации строк обобщается до операции над наборами строк следующим образом:
Для двух наборов строк S 1 и S 2 конкатенация S 1 S 2 состоит из всех строк вида vw , где v — строка из S 1 , а w — строка из S 2 , или формально S 1 S 2 = { vw : v ∈ S 1 , w ∈ S 2 } . Многие авторы также используют конкатенацию набора строк и одной строки, и наоборот, которые определяются аналогично S 1 w = { vw : v ∈ S 1 } и vS 2 = { vw : w ∈ S 2 } . В этих определениях строка vw — это обычная конкатенация строк v и w , как определено во вводном разделе.
Например, если F = {a, b, c, d, e, f, g, h} , а R = {1, 2, 3, 4, 5, 6, 7, 8} , то FR обозначает множество всех координат шахматной доски в алгебраической нотации , а e R обозначает множество всех координат королевской вертикали .
В этом контексте наборы строк часто называют формальными языками. Оператор конкатенации обычно выражается как простое сопоставление (как в случае с умножением ).
Строки над алфавитом с помощью операции конкатенации образуют ассоциативную алгебраическую структуру с единичным элементом — нулевой строкой — свободным моноидом .
Наборы строк с конкатенацией и чередованием образуют полукольцо , причем конкатенация (*) распространяется на чередование (+); 0 — пустой набор , а 1 — набор, состоящий только из нулевой строки.
В программировании для телефонии конкатенация используется для предоставления динамической звуковой обратной связи пользователю. Например, в говорящих часах «время суток» конкатенация используется для указания правильного времени путем воспроизведения соответствующих записей, объединенных вместе. Например: «в тон, время будет», «восемь», «тридцать», «пять», «и», «двадцать», «пять», «секунды».
Сами записи существуют отдельно, но проигрывание их одна за другой дает слушателю грамматически правильное предложение.
Этот метод также используется в объявлениях об изменении номера, системах голосовой почты или большинстве приложений телефонии, которые обеспечивают динамическую обратную связь с вызывающим абонентом (например, moviefone , tellme и другие).
Программирование для любого вида компьютеризированной системы оповещения может также использовать конкатенацию для динамических публичных объявлений (например, рейсы в аэропорту). Система будет архивировать записанную речь чисел, маршрутов или авиакомпаний, пунктов назначения, времени и т. д. и воспроизводить их в определенной последовательности для создания грамматически правильного предложения, которое будет объявлено по всему объекту.
Один из принципов проектирования реляционных баз данных заключается в том, что поля таблиц данных должны отражать одну характеристику субъекта таблицы, что означает, что они не должны содержать конкатенированных строк. Когда конкатенация желательна в отчете, она должна быть предоставлена во время запуска отчета. Например, для отображения физического адреса определенного клиента данные могут включать номер здания, название улицы, номер подкорпуса здания, название города, название штата/провинции, почтовый индекс и название страны, например, "123 Fake St Apt 4, Boulder, CO 80302, USA", что объединяет семь полей. Однако таблица данных клиентов не должна использовать одно поле для хранения этой конкатенированной строки; вместо этого конкатенация семи полей должна происходить при запуске отчета. Причина таких принципов в том, что без них ввод и обновление больших объемов данных становится подверженным ошибкам и трудоемким. Раздельный ввод города, штата, почтового индекса и страны позволяет выполнить проверку ввода данных (например, обнаружить недопустимую аббревиатуру штата). Затем эти отдельные элементы можно использовать для сортировки или индексации записей, например, все с названием города "Боулдер".
В развлекательной математике многие задачи касаются свойств чисел при конкатенации их цифр в некоторой базе . Примерами служат домашние простые числа (простые числа, полученные путем многократного разложения на множители возрастающей конкатенации простых множителей заданного числа), числа Смарандаке-Уэллина (конкатенации первых простых чисел ) и константы Чамперноуна и Коупленда-Эрдёша (действительные числа, образованные десятичными представлениями положительных целых чисел и простых чисел соответственно).