Конкатенация
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( июнь 2024 г. ) |
В теории формального языка и программировании компьютерном конкатенация строк — это операция сквозного соединения символов строк . Например, сочетание слов «снег» и «мяч» — это «снежный ком». В некоторых формализациях теории конкатенации , также называемой теорией струн, конкатенация строк является примитивным понятием .
Синтаксис
[ редактировать ]Во многих языках программирования конкатенация строк представляет собой бинарный инфиксный оператор , а в некоторых она записывается без оператора. Это реализуется разными способами:
- Перегрузка знака плюс
+
Пример из С#:"Hello, " + "World"
имеет значение"Hello, World"
. - Выделенный оператор, например
.
в PHP,&
в Visual Basic [1] и||
в SQL. [2] [3] Это имеет преимущество перед повторным использованием+
что он позволяет неявное преобразование типа в строку. - конкатенация строковых литералов , что означает, что соседние строки объединяются без какого-либо оператора. Пример из C:
"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», который объединяет семь месторождений. Однако таблица данных клиентов не должна использовать одно поле для хранения этой объединенной строки; скорее, объединение семи полей должно произойти при запуске отчета. Причина таких принципов в том, что без них ввод и обновление больших объемов данных становится подверженным ошибкам и трудоемким. Отдельный ввод города, штата, почтового индекса и страны позволяет проверить ввод данных (например, обнаружить недопустимое сокращение штата). Затем эти отдельные элементы можно использовать для сортировки или индексирования записей, например, всех с «Боулдер» в качестве названия города.
Рекреационная математика
[ редактировать ]В развлекательной математике многие проблемы касаются свойств чисел при сцеплении их цифр в некотором основании . Примеры включают домашние простые числа (простые числа, полученные путем многократного факторизации возрастающей конкатенации простых множителей заданного числа), числа Смарандаша–Веллина (объединения первых простых чисел ), а также Чамперноуна и константы Коупленда–Эрдеша (действительные числа, образованные десятичные представления натуральных и простых чисел соответственно).
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Операторы конкатенации в Visual Basic» . Руководство по .NET Visual Basic Возможности языка: операторы и выражения . Майкрософт. 2015.
- ^ «SQL | Оператор конкатенации» . geeksforgeeks.org . 12 января 2018 года . Проверено 11 августа 2023 г.
- ^ «Оператор конкатенации» . Онлайн-документация по базе данных Oracle, 10g, выпуск 2 (10.2) / Администрирование: Справочник по SQL базы данных . Оракул.
Источники
[ редактировать ]- Хопкрофт, Джон Э .; Уллман, Джеффри Д. (1979). Введение в теорию автоматов, языки и вычисления . Аддисон-Уэсли. ISBN 0-201-02988-Х .
- Коркоран, Джон ; Фрэнк, Уильям; Мэлони, Майкл (1974). «Теория струн». Журнал символической логики . 39 (4): 625–637. дои : 10.2307/2272846 . JSTOR 2272846 . S2CID 2168826 .