В теории формального языка и компьютерном программировании конкатенация строк — это операция сквозного соединения строк символов . Например, сочетание слов «снег» и «мяч» — это «снежный ком». В некоторых формализациях теории конкатенации , также называемой теорией струн, конкатенация строк является примитивным понятием .
Во многих языках программирования конкатенация строк представляет собой бинарный инфиксный оператор , а в некоторых она записывается без оператора. Это реализуется разными способами:
+
Пример из C#: "Hello, " + "World"
имеет значение "Hello, World"
..
, в PHP, &
Visual Basic [1] и ||
SQL. [2] [3] Это имеет преимущество перед повторным использованием +
, поскольку позволяет неявно преобразовывать тип в строку."Hello, " "World"
имеет значение "Hello, World"
.В программировании конкатенация строк обычно происходит во время выполнения, поскольку значения строк обычно неизвестны до времени выполнения. Однако в случае строковых литералов значения известны во время компиляции, и, таким образом, объединение строк может быть выполнено во время компиляции либо посредством объединения строковых литералов , либо посредством свертывания констант .
В теории формального языка и сопоставлении с образцом (включая регулярные выражения ) операция конкатенации строк обобщается до операции над наборами строк следующим образом:
Для двух наборов строк S1 и S2 конкатенация S1 S2 состоит из всех строк вида vw , где v — строка из S1 , а w — строка из S2 , или формально S1 S2 = { vw : v ∈ S 1 , ш ∈ 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», который объединяет семь месторождений. Однако таблица данных клиентов не должна использовать одно поле для хранения этой объединенной строки; скорее, объединение семи полей должно произойти при запуске отчета. Причина таких принципов в том, что без них ввод и обновление больших объемов данных становится подверженным ошибкам и трудоемким. Отдельный ввод города, штата, почтового индекса и страны позволяет проверить ввод данных (например, обнаружить недопустимое сокращение штата). Затем эти отдельные элементы можно использовать для сортировки или индексирования записей, например, всех с «Боулдер» в качестве названия города.
В развлекательной математике многие проблемы касаются свойств чисел при сцеплении их цифр в некотором основании . Примеры включают домашние простые числа (простые числа, полученные путем многократного факторизации возрастающей конкатенации простых множителей заданного числа), числа Смарандаша–Веллина (объединения первых простых чисел ), а также константы Чамперноуна и Коупленда–Эрдёша (действительные числа, образованные десятичные представления натуральных и простых чисел соответственно).