В теории формального языка и компьютерном программировании, конкатенация строк - это операция соединения символьные строки сквозные. Например, сочетание слов «снег» и «мяч» составляет «снежный ком». В некоторых формализации теории конкатенации, также называемой теорией струн, конкатенация строк является примитивным понятием.
Во многих языках программирования конкатенация строк представляет собой двоичный инфиксный оператор. Оператор +
(плюс) часто перегружен для обозначения конкатенации строковых аргументов: «Привет» + «Мир»
имеет значение «Привет, Мир "
. В других языках существует отдельный оператор, в частности, для указания неявного преобразования типа в строку, в отличие от более сложного поведения для общего плюса. Примеры включают .
в Edinburgh IMP, Perl и PHP, ..
в Lua и в Ada, AppleScript и Visual Basic. Существует другой синтаксис, например
||
в PL / I и Oracle Database SQL.
В некоторых языках, особенно C, C ++ и Python, конкатенация строковых литералов, означающая, что смежные строковые литералы объединяются без оператора: «Привет», «Мир»
имеет значение «Привет, мир»
. В других языках конкатенация строковых литералов с оператором оценивается во время компиляции с помощью сворачивания констант, хотя это часто является деталью реализации компилятора, а не особенностями языка.
В программировании конкатенация строк обычно происходит во время выполнения, поскольку строковые значения обычно не известны до времени выполнения. Однако в случае строковых литералов значения известны во время компиляции, и, таким образом, конкатенация строк может выполняться во время компиляции либо с помощью конкатенации строковых литералов , либо с помощью сворачивания констант.
В теории формального языка и сопоставлении с образцом (включая регулярные выражения ) операция конкатенации строк обобщается на операция над наборами строк следующим образом:
Для двух наборов строк S 1 и S 2 конкатенация S 1S2состоит из всех строк в форме vw, где v - это строка из S 1, а w - это строка из S 2, или формально S 1S2= {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 обозначает набор всех координат шахматной доски в алгебраической записи, а eR обозначает набор всех координат файла королей.
В этом контексте, наборы строк часто называют формальными языками. Оператор конкатенации обычно выражается как простое сопоставление (как в случае умножения ).
Строки в алфавите, с операцией конкатенации, образуют ассоциативную алгебраическую структуру с элементом идентичности нулевой строкой —a свободный моноид.
Наборы строк с конкатенацией и чередованием образуют полукольцо с конкатенацией (*) с распределением по чередованию (+); 0 - это пустой набор, а 1 - набор, состоящий только из пустой строки.
В программировании для телефонии конкатенация используется для предоставления пользователю динамической звуковой обратной связи. Например, в «часах времени» говорящих часов конкатенация используется, чтобы дать правильное время путем воспроизведения соответствующих записей, соединенных вместе. Например:
Сами записи существуют отдельно, но их воспроизведение одна за другой дает грамматически правильное предложение для слушатель.
Этот метод также используется в объявлениях об изменении номера, системах голосовой почты или большинстве телефонных приложений, которые обеспечивают динамическую обратную связь с вызывающим абонентом (например, moviefone, Tellme и другие).
Программирование для любого вида компьютеризированной системы оповещения также может использовать конкатенацию для динамических публичных объявлений (например, полеты в аэропорту). Система будет архивировать записанную речь с числами, маршрутами или авиакомпаниями, пунктами назначения, временем и т. Д. И воспроизводить их в определенной последовательности для создания грамматически правильного предложения, которое объявляется по всему объекту.
Один из принципов проектирования реляционной базы данных состоит в том, что поля таблиц данных должны отражать единственную характеристику предмета таблицы, что означает, что они должны не содержать связанных строк. Если в отчете желательно объединение, оно должно быть предоставлено во время выполнения отчета. Например, чтобы отобразить физический адрес определенного клиента, данные могут включать номер здания, название улицы, номер подразделения здания, название города, название штата / провинции, почтовый индекс и название страны, например, «123 Fake St Apt 4, Boulder, CO 80302, USA », объединяющая семь месторождений. Однако таблица данных клиентов не должна использовать одно поле для хранения этой объединенной строки; скорее, объединение семи полей должно произойти при запуске отчета. Причина таких принципов заключается в том, что без них ввод и обновление больших объемов данных становится подверженным ошибкам и трудоемким. Раздельный ввод города, штата, почтового индекса и страны позволяет проверить ввод данных (например, определить недопустимое сокращение штата). Затем эти отдельные элементы можно использовать для сортировки или индексации записей, например, все с "Boulder" в качестве названия города.
В развлекательной математике многие проблемы касаются свойств чисел при конкатенации их числительных в некотором основании. Примеры включают домашние простые числа (простые числа, полученные многократным разложением на множители возрастающей конкатенации простых множителей данного числа), числа Смарандаче – Веллина (конкатенации первых простых чисел ), а также константы Чамперноуна и Коупленда – Эрдеша (действительные числа, образованные десятичным представлением натуральных чисел и простых чисел, соответственно).