Функции для работы со строками в Bicep

В этой статье описаны функции Bicep для работы со строками.

base64

base64(inputString)

Возвращает входную строку в кодировке Base64.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
inputString Да строка Значение, которое нужно вернуть в кодировке base64.

Возвращаемое значение

Строка, содержащая представление в кодировке base64.

Примеры

В следующем примере показано, как использовать функцию base64.

param stringData string = 'one, two, three'
param jsonFormattedData string = '{\'one\': \'a\', \'two\': \'b\'}'

var base64String = base64(stringData)
var base64Object = base64(jsonFormattedData)

output base64Output string = base64String
output toStringOutput string = base64ToString(base64String)
output toJsonOutput object = base64ToJson(base64Object)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
base64Output Строка b25lLCB0d28sIHRocmVl
toStringOutput Строка one, two, three
toJsonOutput Object {"one": "a", "two": "b"}

base64ToJson

base64ToJson(base64Value)

Преобразует представление в кодировке base64 в объект JSON.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
base64Value Да строка Представление в кодировке base64, которое необходимо преобразовать в объект JSON.

Возвращаемое значение

Объект JSON.

Примеры

В следующем примере функция base64ToJson используется для преобразования значения в кодировке base64:

param stringData string = 'one, two, three'
param jsonFormattedData string = '{\'one\': \'a\', \'two\': \'b\'}'

var base64String = base64(stringData)
var base64Object = base64(jsonFormattedData)

output base64Output string = base64String
output toStringOutput string = base64ToString(base64String)
output toJsonOutput object = base64ToJson(base64Object)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
base64Output Строка b25lLCB0d28sIHRocmVl
toStringOutput Строка one, two, three
toJsonOutput Object {"one": "a", "two": "b"}

base64ToString

base64ToString(base64Value)

Преобразует представление в кодировке base64 в строку.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
base64Value Да строка Представление в кодировке base64, которое необходимо преобразовать в строку.

Возвращаемое значение

Строка преобразованного значения в кодировке base64.

Примеры

В следующем примере функция base64ToString используется для преобразования значения в кодировке base64:

param stringData string = 'one, two, three'
param jsonFormattedData string = '{\'one\': \'a\', \'two\': \'b\'}'

var base64String = base64(stringData)
var base64Object = base64(jsonFormattedData)

output base64Output string = base64String
output toStringOutput string = base64ToString(base64String)
output toJsonOutput object = base64ToJson(base64Object)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
base64Output Строка b25lLCB0d28sIHRocmVl
toStringOutput Строка one, two, three
toJsonOutput Object {"one": "a", "two": "b"}

concat

concat(arg1, arg2, arg3, ...)

Объединяет несколько строковых значений и возвращает объединенную строку или объединяет несколько массивов и возвращает объединенный массив. Чтобы улучшить удобочитаемость, используйте интерполяцию строк вместо concat() функции. Однако в некоторых случаях, например замена строк в многостроковых строках, может потребоваться вернуться к использованию concat() функции или replace() функции.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да строка или массив Первая строка или массив для объединения.
дополнительные аргументы No строка или массив Дополнительные строки или массивы в нужном порядке для объединения.

Эта функция может принимать любое количество аргументов, а также строки или массивы параметров. Однако вы не можете указать для параметров и массивы, и строки. Строки объединяются только с другими строками.

Возвращаемое значение

Строка или массив объединенных значений.

Примеры

В следующем примере показано сравнение между интерполяцией и использованием concat() функции. Два выходных данных возвращают одно и то же значение.

param prefix string = 'prefix'

output concatOutput string = concat(prefix, 'And', uniqueString(resourceGroup().id))
output interpolationOutput string = '${prefix}And${uniqueString(resourceGroup().id)}'

Выходные данные из предыдущего примера со значением по умолчанию:

Имя. Тип значение
concatOutput Строка prefixAnd5yj4yjf5mbg72
интерполяцияOutput Строка prefixAnd5yj4yjf5mbg72

Сейчас интерполяция не поддерживается в мультиломаных. В следующем примере показано сравнение между интерполяцией и использованием concat() функции.

var blocked = 'BLOCKED'

output concatOutput string = concat('''interpolation
is ''', blocked)
output interpolationOutput string = '''interpolation
is ${blocked}'''

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
concatOutput Строка интерполяция\nis BLOCKED
интерполяцияOutput Строка интерполяция\nis ${заблокирован}

содержит

contains(container, itemToFind)

Проверяет, содержит ли массив значение, содержит ли объект ключ или содержит ли строка подстроку. При сравнении строк учитывается регистр. Тем не менее при проверке объекта на наличие ключа сравнение выполняется без учета регистра.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
контейнер Да массив, объект или строка Значение, содержащее значение, которое необходимо найти.
itemToFind Да строка или целое число Значение, которое необходимо найти.

Возвращаемое значение

True, если элемент найден. В противном случае — False.

Примеры

В следующем примере показано, как использовать функцию contains с различными типами:

param stringToTest string = 'OneTwoThree'
param objectToTest object = {
  one: 'a'
  two: 'b'
  three: 'c'
}
param arrayToTest array = [
  'one'
  'two'
  'three'
]

output stringTrue bool = contains(stringToTest, 'e')
output stringFalse bool = contains(stringToTest, 'z')
output objectTrue bool = contains(objectToTest, 'one')
output objectFalse bool = contains(objectToTest, 'a')
output arrayTrue bool = contains(arrayToTest, 'three')
output arrayFalse bool = contains(arrayToTest, 'four')

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
stringTrue Bool Истина
stringFalse Bool False
objectTrue Bool Истина
objectFalse Bool False
arrayTrue Bool Истина
arrayFalse Bool False

dataUri

dataUri(stringToConvert)

Преобразует значение в универсальный код ресурса (URI) данных.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
stringToConvert Да строка Значение, которое необходимо преобразовать в URI данных.

Возвращаемое значение

Строка в формате URI данных.

Примеры

В следующем примере значение преобразуется в URI данных, а URI данных преобразуется в строку:

param stringToTest string = 'Hello'
param dataFormattedString string = 'data:;base64,SGVsbG8sIFdvcmxkIQ=='

output dataUriOutput string = dataUri(stringToTest)
output toStringOutput string = dataUriToString(dataFormattedString)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
dataUriOutput Строка data:text/plain;charset=utf8;base64,SGVsbG8=
toStringOutput Строка Hello, World!

dataUriToString

dataUriToString(dataUriToConvert)

Преобразует значение в формате URI данных в строку.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
dataUriToConvert Да строка Значение URI данных, которое необходимо преобразовать.

Возвращаемое значение

Строка, содержащая преобразованное значение.

Примеры

В следующем примере значение преобразуется в URI данных, а URI данных преобразуется в строку:

param stringToTest string = 'Hello'
param dataFormattedString string = 'data:;base64,SGVsbG8sIFdvcmxkIQ=='

output dataUriOutput string = dataUri(stringToTest)
output toStringOutput string = dataUriToString(dataFormattedString)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
dataUriOutput Строка data:text/plain;charset=utf8;base64,SGVsbG8=
toStringOutput Строка Hello, World!

empty

empty(itemToTest)

Определяет, являются ли пустыми массив, объект или строка.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
itemToTest Да массив, объект или строка Значение, которое необходимо проверить на наличие содержимого.

Возвращаемое значение

Возвращает результат True, если значение пустое. В противном случае — False.

Примеры

В следующем примере проверяется, являются ли пустыми массив, объект и строка.

param testArray array = []
param testObject object = {}
param testString string = ''

output arrayEmpty bool = empty(testArray)
output objectEmpty bool = empty(testObject)
output stringEmpty bool = empty(testString)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayEmpty Bool Истина
objectEmpty Bool Истина
stringEmpty Bool Истина

endsWith

endsWith(stringToSearch, stringToFind)

Определяет, заканчивается ли строка определенным значением. При сравнении учитывается регистр букв.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
stringToSearch Да строка Значение, содержащее элемент, который необходимо найти.
stringToFind Да строка Значение, которое необходимо найти.

Возвращаемое значение

True, если последний знак или знаки строки соответствуют значению. В противном случае — False.

Примеры

В следующем примере показано, как использовать функции startsWith и endsWith:

output startsTrue bool = startsWith('abcdef', 'ab')
output startsCapTrue bool = startsWith('abcdef', 'A')
output startsFalse bool = startsWith('abcdef', 'e')
output endsTrue bool = endsWith('abcdef', 'ef')
output endsCapTrue bool = endsWith('abcdef', 'F')
output endsFalse bool = endsWith('abcdef', 'e')

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
startsTrue Bool Истина
startsCapTrue Bool Истина
startsFalse Bool False
endsTrue Bool Истина
endsCapTrue Bool Истина
endsFalse Bool False

первая

first(arg1)

Возвращает первый знак строки или первый элемент массива. Если задана пустая строка, функция приводит к пустой строке. В случае пустого массива функция возвращается null.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да массив или строка Значение, из которого необходимо извлечь первый элемент или знак.

Возвращаемое значение

Строка первого знака или тип (строка, целое число, массив или объект) первого элемента в массиве.

Примеры

В следующем примере показано, как использовать функцию first с массивом и строкой:

param arrayToTest array = [
  'one'
  'two'
  'three'
]

output arrayOutput string = first(arrayToTest)
output stringOutput string = first('One Two Three')

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayOutput Строка один
stringOutput Строка O

format

format(formatString, arg1, arg2, ...)

Создает форматированную строку на основе входных значений.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
formatString Да строка Строка составного форматирования.
arg1 Да строка, целое число или логическое значение Значение, которое должно быть включено в отформатированную строку.
дополнительные аргументы No строка, целое число или логическое значение Дополнительные значения, которые должны быть включены в отформатированную строку.

Замечания

Эта функция используется для форматирования строки в файле Bicep. В ней используются те же параметры форматирования, что и в методе System. String. Format в .NET.

Примеры

Ниже представлен пример использования функции format.

param greeting string = 'Hello'
param name string = 'User'
param numberToFormat int = 8175133
param objectToFormat object = { prop: 'value' }

output formatTest string = format('{0}, {1}. Formatted number: {2:N0}', greeting, name, numberToFormat)
output formatObject string = format('objectToFormat: {0}', objectToFormat)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
formatTest Строка Hello, User. Formatted number: 8,175,133
formatObject Строка objectToFormat: {'prop':'value'}

guid

guid(baseString, ...)

Создает значение в формате глобального уникального идентификатора на основе значений, указанных как параметры.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
baseString Да строка Значение, используемое в хэш-функции для создания GUID.
Дополнительные параметры (если необходимы) Нет строка Можно добавить столько строк, сколько необходимо для создания значения, которое задает уровень уникальности.

Замечания

Эта функция полезна, если нужно создать значение в формате глобального уникального идентификатора. Указываются значения параметров, которые ограничивают область уникальности результата. Можно указать, является ли уникальным имя в подписке, группе ресурсов или развертывании.

Возвращаемое значение — это не случайная строка, а, скорее, результат применения хэш-функции к параметрам. Возвращаемое значение содержит 36 символов. Оно не является глобальным уникальным значением. Чтобы создать глобальный уникальный идентификатор (GUID), который не основан на этом хэш-значении параметров, используйте функцию newGuid.

Примечание.

Порядок параметров влияет на возвращаемое значение. Например:

guid('hello', 'world') и guid('world', 'hello').

возвращают не одно и то же значение.

В следующих примерах показывается, как использовать GUID при создании уникального значения для часто используемых уровней.

Уникальное в пределах подписки.

guid(subscription().subscriptionId)

Уникальное в пределах группы ресурсов.

guid(resourceGroup().id)

Уникальное в пределах развертывания для группы ресурсов.

guid(resourceGroup().id, deployment().name)

Функция guid реализует алгоритм из RFC 4122 §4.3. Исходный источник можно найти в GuidUtility с некоторыми изменениями.

Возвращаемое значение

Строка, содержащая 36 символов, в формате глобального уникального идентификатора.

Примеры

В следующем примере возвращаются результаты из guid.

output guidPerSubscription string = guid(subscription().subscriptionId)
output guidPerResourceGroup string = guid(resourceGroup().id)
output guidPerDeployment string = guid(resourceGroup().id, deployment().name)

indexOf

indexOf(stringToSearch, stringToFind)

Возвращает первую позицию значения в строке. При сравнении учитывается регистр букв.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
stringToSearch Да строка Значение, содержащее элемент, который необходимо найти.
stringToFind Да строка Значение, которое необходимо найти.

Возвращаемое значение

Целое число, представляющее позицию искомого элемента. Значение отсчитывается, начиная с нуля. Если элемент не найден, то возвращается значение –1.

Примеры

В следующем примере показано, как использовать функции indexOf и lastIndexOf:

output firstT int = indexOf('test', 't')
output lastT int = lastIndexOf('test', 't')
output firstString int = indexOf('abcdef', 'CD')
output lastString int = lastIndexOf('abcdef', 'AB')
output notFound int = indexOf('abcdef', 'z')

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
firstT Int 0
lastT Int 3
firstString Int 2
lastString Int 0
notFound Int -1

join

join(inputArray, delimiter)

Объединяет массив строк в одну строку, разделенную разделителем.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
inputArray Да Массив строк. Массив строк для объединения.
разделитель Да Разделитель для разбиения строки.

Возвращаемое значение

Строка .

Примеры

В следующем примере массив входных строк соединяется со строками, разделенными запятой или точкой с запятой.

var arrayString = [
  'one'
  'two'
  'three'
]

output firstOutput string = join(arrayString, ',')
output secondOutput string = join(arrayString, ';')

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
firstOutput Строка "один,два,три"
secondOutput Строка "один;два;три"

Для этой функции требуется интерфейс командной строки Bicep версии 0.8.X или более поздней.

json

json(arg1)

Преобразовывает допустимую строку JSON в тип данных JSON. Дополнительные сведения см. в разделе о функции json.

Пространство имен: sys.

последняя

last(arg1)

Возвращает последний знак строки или последний элемент массива.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да массив или строка Значение, из которого необходимо извлечь последний элемент или знак.

Возвращаемое значение

Строка последнего знака или тип (строка, целое число, массив или объект) последнего элемента в массиве.

Примеры

В следующем примере показано, как использовать функцию last с массивом и строкой:

param arrayToTest array = [
  'one'
  'two'
  'three'
]

output arrayOutput string = last(arrayToTest)
output stringOutput string = last('One Two Three')

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayOutput Строка три
stringOutput Строка e

lastIndexOf

lastIndexOf(stringToSearch, stringToFind)

Возвращает последнюю позицию значения в строке. При сравнении учитывается регистр букв.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
stringToSearch Да строка Значение, содержащее элемент, который необходимо найти.
stringToFind Да строка Значение, которое необходимо найти.

Возвращаемое значение

Целое число, представляющее последнюю позицию искомого элемента. Значение отсчитывается, начиная с нуля. Если элемент не найден, то возвращается значение –1.

Примеры

Следующий пример демонстрирует использование функций indexOf и lastIndexOf:

output firstT int = indexOf('test', 't')
output lastT int = lastIndexOf('test', 't')
output firstString int = indexOf('abcdef', 'CD')
output lastString int = lastIndexOf('abcdef', 'AB')
output notFound int = indexOf('abcdef', 'z')

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
firstT Int 0
lastT Int 3
firstString Int 2
lastString Int 0
notFound Int -1

length

length(string)

Возвращает число знаков в строке, элементов в массиве или свойств корневого уровня в объекте.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да массив, строка или объект Массив, используемый для получения числа элементов, строка, используемая для получения числа символов, или объект, используемый для получения числа свойств корневого уровня.

Возвращаемое значение

Целое число.

Примеры

В следующем примере показано, как использовать функцию length с массивом и строкой:

param arrayToTest array = [
  'one'
  'two'
  'three'
]
param stringToTest string = 'One Two Three'
param objectToTest object = {
  propA: 'one'
  propB: 'two'
  propC: 'three'
  propD: {
    'propD-1': 'sub'
    'propD-2': 'sub'
  }
}

output arrayLength int = length(arrayToTest)
output stringLength int = length(stringToTest)
output objectLength int = length(objectToTest)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayLength Int 3
stringLength Int 13
objectLength Int 4

newGuid

newGuid()

Возвращает значение в формате глобального уникального идентификатора. Эта функция может использоваться только в значении параметра по умолчанию.

Пространство имен: sys.

Замечания

Эту функцию можно использовать только в выражении для значения параметра по умолчанию. При использовании этой функции где-либо еще в файле Bicep возвращается ошибка. Функция не разрешена в других частях файла Bicep, поскольку она возвращает разные значения при каждом вызове. Развертывание одного и того же файла Bicep с одинаковыми параметрами, как правило, не будет возвращать одинаковые результаты.

Функция newGuid отличается от функции guid, так как она не принимает никаких параметров. При вызове функции guid с теми же параметрами каждый раз возвращается один и тот же идентификатор. Используйте функцию guid, если вам необходимо гарантированно создавать один и тот же идентификатор GUID для конкретного окружения. Используйте функцию newGuid, если каждый раз вам требуется другой идентификатор, например развертывание ресурсов в тестовой среде.

Для создания глобального уникального идентификатора функция newGuid использует структуру GUID на платформе .NET Framework.

Если вы используете повторное развертывание предыдущего успешного развертывания, а предыдущее развертывание включает параметр, использующий функцию newGuid, то этот параметр не будет вычисляться повторно. Вместо этого значение параметра из предыдущего развертывания автоматически используется повторно в развертывании отката.

В тестовой среде может потребоваться многократное развертывание ресурсов, которые активны только в течение короткого времени. Вместо конструирования уникальных имен для их создания можно использовать функцию newGuid с функцией uniqueString.

Будьте внимательны при повторном развертывании файла Bicep, который использует функцию newGuid для значения по умолчанию. При повторном развертывании без ввода значения параметра функция вычисляется повторно. Если нужно обновить существующий ресурс, а не создать новый, следует передать значение параметра из предыдущего развертывания.

Возвращаемое значение

Строка, содержащая 36 символов, в формате глобального уникального идентификатора.

Примеры

В следующем примере показан параметр с новым идентификатором.

param guidValue string = newGuid()

output guidOutput string = guidValue

Выходные данные из предыдущего примера различаются для каждого развертывания, но будут выглядеть примерно так:

Имя. Тип значение
guidOutput строка b76a51fc-bd72-4a77-b9a2-3c29e7d2e551

В следующем примере функция newGuid используется для создания уникального имени для учетной записи хранения. Этот файл Bicep может работать для тестовой среды, где учетная запись хранения существует в течение непродолжительного времени и не развертывается повторно.

param guidValue string = newGuid()

var storageName = 'storage${uniqueString(guidValue)}'

resource myStorage 'Microsoft.Storage/storageAccounts@2018-07-01' = {
  name: storageName
  location: 'West US'
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {}
}

output nameOutput string = storageName

Выходные данные из предыдущего примера различаются для каждого развертывания, но будут выглядеть примерно так:

Имя. Тип значение
nameOutput строка storagenziwvyru7uxie

padLeft

padLeft(valueToPad, totalLength, paddingCharacter)

Возвращает выровненную по правому краю строку, добавляя символы в левую часть до достижения общее указанной длины.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
значение_для_заполнения Да строка или целое число Значение, выравниваемое по правому краю.
общая_длина Да INT Общее число символов в возвращаемой строке.
символ_заполнения No один знак Символ, используемый для заполнения левой части до достижения общей длины. Значение по умолчанию — пробел.

Если длина исходной строки превышает число знаков для заполнения, то знаки не добавляются.

Возвращаемое значение

Строка, содержащая по крайней мере число указанных знаков.

Примеры

В следующем примере показано, как заполнить указанное пользователем значение параметра, добавляя знак нуля до достижения общего числа знаков.

param testString string = '123'

output stringOutput string = padLeft(testString, 10, '0')

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
stringOutput Строка 0000000123

replace

replace(originalString, oldString, newString)

Возвращает новую строку, в которой все экземпляры одной строки заменены другой строкой.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
исходная_строка Да строка Значение, в котором все экземпляры одной строки заменены другой строкой.
oldString Да строка Строка, которая удаляется из исходной строки.
newString Да строка Строка, добавляемая вместо удаляемой строки.

Возвращаемое значение

Строка с замененными знаками.

Примеры

В приведенном ниже примере показано, как удалить все тире из предоставленной пользователем строки и как заменить часть строки другой строкой.

param testString string = '123-123-1234'

output firstOutput string = replace(testString, '-', '')
output secondOutput string = replace(testString, '1234', 'xxxx')

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
firstOutput Строка 1231231234
secondOutput Строка 123-123-xxxx

skip

skip(originalValue, numberToSkip)

Возвращает строку, содержащую все знаки из исходной строки, начиная с заданной позиции, или массив, содержащий все элементы из исходного массива, начиная с заданной позиции.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
originalValue Да массив или строка Массив или строка, используемые для пропуска.
numberToSkip Да INT Число элементов или знаков, которые необходимо пропустить. Если это значение меньше или равно 0, то возвращаются все элементы или знаки в значении. Если это значение превышает длину массива или строки, возвращается пустой массив или строка.

Возвращаемое значение

Массив или строка.

Примеры

В следующем примере пропускается заданное число элементов в массиве и заданное число знаков в строке.

param testArray array = [
  'one'
  'two'
  'three'
]
param elementsToSkip int = 2
param testString string = 'one two three'
param charactersToSkip int = 4

output arrayOutput array = skip(testArray, elementsToSkip)
output stringOutput string = skip(testString, charactersToSkip)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayOutput Массив ["three"]
stringOutput Строка two three

split

split(inputString, delimiter)

Возвращает массив строк, содержащий подстроки входной строки, разделенные переданными разделителями.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
inputString Да строка Строка для разделения.
разделитель Да строка или массив строк Разделитель для разбиения строки.

Возвращаемое значение

Массив строк.

Примеры

В следующем примере входная строка разбивается с помощью запятой или точки с запятой.

param firstString string = 'one,two,three'
param secondString string = 'one;two,three'

var delimiters = [
  ','
  ';'
]

output firstOutput array = split(firstString, ',')
output secondOutput array = split(secondString, delimiters)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
firstOutput Массив ["one", "two", "three"]
secondOutput Массив ["one", "two", "three"]

startsWith

startsWith(stringToSearch, stringToFind)

Определяет, начинается ли строка с определенного значения. При сравнении учитывается регистр букв.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
stringToSearch Да строка Значение, содержащее элемент, который необходимо найти.
stringToFind Да строка Значение, которое необходимо найти.

Возвращаемое значение

True, если первый знак или знаки строки соответствуют значению. В противном случае — False.

Примеры

В следующем примере показано, как использовать функции startsWith и endsWith:

output startsTrue bool = startsWith('abcdef', 'ab')
output startsCapTrue bool = startsWith('abcdef', 'A')
output startsFalse bool = startsWith('abcdef', 'e')
output endsTrue bool = endsWith('abcdef', 'ef')
output endsCapTrue bool = endsWith('abcdef', 'F')
output endsFalse bool = endsWith('abcdef', 'e')

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
startsTrue Bool Истина
startsCapTrue Bool Истина
startsFalse Bool False
endsTrue Bool Истина
endsCapTrue Bool Истина
endsFalse Bool False

строка

string(valueToConvert)

Преобразует указанное значение в строку. Строки возвращаются как есть. Другие типы преобразуются в эквивалентное представление JSON. Если необходимо преобразовать строку в JSON, т. е. кавычки и escape-файл, можно использовать substring(string([value]), 1, length(string([value]) - 2).

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
valueToConvert Да Любое Значение, которое необходимо преобразовать в строку. Можно преобразовать любой тип значения, включая объекты и массивы.

Возвращаемое значение

Строка преобразованного значения.

Примеры

В следующем примере показано, как преобразовать различные типы значений в строки:

param testObject object = {
  valueA: 10
  valueB: 'Example Text'
}
param testArray array = [
  '\'a\''
  '"b"'
  '\\c\\'
]
param testInt int = 5
param testString string = 'foo " \' \\'

output objectOutput string = string(testObject)
output arrayOutput string = string(testArray)
output intOutput string = string(testInt)
output stringOutput string = string(testString)
output stringEscapedOutput string = substring(string([testString]), 1, length(string([testString])) - 2)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
objectOutput Строка {"valueA":10,"valueB":"Example Text"}
arrayOutput Строка ["'a'","\"b\"","\\c\\"]
intOutput Строка 5
stringOutput Строка foo " ' \
stringEscapedOutput Строка "foo \" ' \\"

substring

substring(stringToParse, startIndex, length)

Возвращает подстроку, которая начинается с указанной позиции и содержит указанное количество символов.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
stringToParse Да строка Исходная строка, из которой извлекается подстрока.
startIndex No INT Отсчитываемая от нуля позиция первого знака для подстроки.
length No INT Число символов в подстроке. Этот параметр должен ссылаться на позицию в строке. Значение этого параметра должно быть равным нулю или больше него. Если этот параметр опущен, возвращается весь остаток строки от начальной позиции.

Возвращаемое значение

Подстрока. Также может принимать значение пустой строки, когда длина равна нулю.

Замечания

Если substring выходит за пределы строки или когда длина меньше нуля, происходит ошибка выполнения функции. Следующий пример завершается ошибкой "Параметры индекса и длины должны относиться к расположению в строке. Параметр индекса: 0, параметр длины: 11, параметр длины строкового параметра: 10".

param inputString string = '1234567890'

var prefix = substring(inputString, 0, 11)

Примеры

В следующем примере из параметра извлекается подстрока.

param testString string = 'one two three'
output substringOutput string = substring(testString, 4, 3)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
substringOutput Строка two

take

take(originalValue, numberToTake)

Возвращает строку, содержащую указанное число знаков, считая от начала строки, или массив, содержащий указанное число элементов, считая от начала массива.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
originalValue Да массив или строка Массив или строка, из которых берутся элементы.
numberToTake Да INT Число элементов или знаков, которые необходимо взять. Если это значение меньше или равно 0, то возвращается пустой массив или строка. Если это значение превышает длину заданного массива или строки, возвращаются все элементы в массиве или строке.

Возвращаемое значение

Массив или строка.

Примеры

В следующем примере из массива извлекается заданное число элементов, а из строки — заданное число знаков.

param testArray array = [
  'one'
  'two'
  'three'
]
param elementsToTake int = 2
param testString string = 'one two three'
param charactersToTake int = 2

output arrayOutput array = take(testArray, elementsToTake)
output stringOutput string = take(testString, charactersToTake)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayOutput Массив ["one", "two"]
stringOutput Строка on

toLower

toLower(stringToChange)

Преобразует указанную строку в нижний регистр.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
изменяемая_строка Да строка Значение, преобразовываемое в нижний регистр.

Возвращаемое значение

Возвращает строку, преобразованную в нижний регистр.

Примеры

В следующем примере значение параметра преобразуется в нижний регистр и в верхний регистр.

param testString string = 'One Two Three'

output toLowerOutput string = toLower(testString)
output toUpperOutput string = toUpper(testString)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
toLowerOutput Строка one two three
toUpperOutput Строка ONE TWO THREE

toUpper

toUpper(stringToChange)

Преобразует указанную строку в верхний регистр.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
изменяемая_строка Да строка Значение, преобразовываемое в верхний регистр.

Возвращаемое значение

Возвращает строку, преобразованную в верхний регистр.

Примеры

В следующем примере значение параметра преобразуется в нижний регистр и в верхний регистр.

param testString string = 'One Two Three'

output toLowerOutput string = toLower(testString)
output toUpperOutput string = toUpper(testString)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
toLowerOutput Строка one two three
toUpperOutput Строка ONE TWO THREE

trim

trim(stringToTrim)

Удаляет все начальные и конечные знаки пробела из указанной строки.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
stringToTrim Да строка Обрезаемое значение.

Возвращаемое значение

Строка без пробелов в начале и в конце.

Примеры

В следующем примере из параметра удаляются пробелы.

param testString string = '    one two three   '

output return string = trim(testString)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
Ввод Строка one two three

uniqueString

uniqueString(baseString, ...)

Создает детерминированную хэш-строку на основании значений, указанных как параметры.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
baseString Да строка Значение, используемое в хэш-функции для создания уникальной строки.
Дополнительные параметры (если необходимы) Нет строка Можно добавить столько строк, сколько необходимо для создания значения, которое задает уровень уникальности.

Замечания

Эта функция полезна в тех случаях, когда необходимо создать уникальное имя ресурса. Указываются значения параметров, которые ограничивают область уникальности результата. Можно указать, является ли уникальным имя в подписке, группе ресурсов или развертывании.

Возвращаемое значение не случайная строка, а, скорее, результат применения хэш-функции. Возвращаемое значение содержит 13 знаков. Оно не является глобальным уникальным значением. Вы можете добавить к значению префикс из своего соглашения об именовании, чтобы создать значимое имя. В следующем примере показан формат возвращаемого значения. Фактическое значение зависит от указанных параметров.

tcvhiyu5h2o5o

В следующих примерах показывается, как использовать uniqueString при создании уникального значения для часто используемых уровней.

Уникальное в пределах подписки.

uniqueString(subscription().subscriptionId)

Уникальное в пределах группы ресурсов.

uniqueString(resourceGroup().id)

Уникальное в пределах развертывания для группы ресурсов.

uniqueString(resourceGroup().id, deployment().name)

В следующем примере показано, как создать уникальное имя учетной записи хранения на основе вашей группы ресурсов. Внутри группы ресурсов имена не будут уникальными, если создавать их таким способом.

resource mystorage 'Microsoft.Storage/storageAccounts@2018-07-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  ...
}

Если каждый раз при развертывании файла Bicep необходимо создать новое уникальное имя и при этом не обновлять ресурс, можно использовать функцию utcNow с функцией uniqueString. Этот подход можно использовать в тестовой среде. Пример см. в разделе о функции utcNow. Обратите внимание, что функцию utcNow можно использовать только в выражении, определяющем значение параметра по умолчанию.

Возвращаемое значение

Строка, содержащая 13 символов.

Примеры

В следующем примере возвращаются результаты выполнения uniquestring.

output uniqueRG string = uniqueString(resourceGroup().id)
output uniqueDeploy string = uniqueString(resourceGroup().id, deployment().name)

uri

uri(baseUri, relativeUri)

Создает абсолютный URI, объединяя строки baseUri и relativeUri.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
baseUri Да строка Строка базового универсального кода ресурса (URI). Следите за поведением в отношении обработки замыкающей косой черты (/), как описано ниже в этой таблице.
relativeUri Да строка Строка относительного универсального кода ресурса (URI), добавляемая к строке базового универсального кода ресурса (URI).
  • Если параметр baseUri заканчивается косой чертой, результатом является просто параметр baseUri, за которым следует параметр relativeUri.

  • Если параметр baseUri не заканчивается косой чертой, происходит одно из двух действий.

    • Если параметр baseUri вообще не имеет косых черт (помимо // впереди), результатом является просто параметр baseUri, за которым следует параметр relativeUri.

    • Если параметр baseUri имеет несколько косых черт, но не заканчивается ими, всё, начиная с последней косой черты, удаляется из параметра baseUri, а результатом является параметр baseUri, за которым следует параметр relativeUri.

Далее приводятся некоторые примеры.

uri('http://contoso.org/firstpath', 'myscript.sh') -> http://contoso.org/myscript.sh
uri('http://contoso.org/firstpath/', 'myscript.sh') -> http://contoso.org/firstpath/myscript.sh
uri('http://contoso.org/firstpath/azuredeploy.json', 'myscript.sh') -> http://contoso.org/firstpath/myscript.sh
uri('http://contoso.org/firstpath/azuredeploy.json/', 'myscript.sh') -> http://contoso.org/firstpath/azuredeploy.json/myscript.sh

Полно описание того, как разрешаются параметры baseUri и relativeUri, можно найти в разделе 5 стандарта RFC 3986.

Возвращаемое значение

Строка, представляющая абсолютный URI для базового и относительного значений.

Примеры

В следующем примере показано, как использовать функции uri, uriComponent и uriComponentToString:

var uriFormat = uri('http://contoso.com/resources/', 'nested/azuredeploy.json')
var uriEncoded = uriComponent(uriFormat)

output uriOutput string = uriFormat
output componentOutput string = uriEncoded
output toStringOutput string = uriComponentToString(uriEncoded)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
uriOutput Строка http://contoso.com/resources/nested/azuredeploy.json
componentOutput Строка http%3A%2F%2Fcontoso.com%2Fresources%2Fnested%2Fazuredeploy.json
toStringOutput Строка http://contoso.com/resources/nested/azuredeploy.json

uriComponent

uricomponent(stringToEncode)

Кодирует URI.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
stringToEncode Да строка Значение для кодирования.

Возвращаемое значение

Строка со значением, закодированным в формате URI.

Примеры

В следующем примере показано, как использовать функции uri, uriComponent и uriComponentToString:

var uriFormat = uri('http://contoso.com/resources/', 'nested/azuredeploy.json')
var uriEncoded = uriComponent(uriFormat)

output uriOutput string = uriFormat
output componentOutput string = uriEncoded
output toStringOutput string = uriComponentToString(uriEncoded)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
uriOutput Строка http://contoso.com/resources/nested/azuredeploy.json
componentOutput Строка http%3A%2F%2Fcontoso.com%2Fresources%2Fnested%2Fazuredeploy.json
toStringOutput Строка http://contoso.com/resources/nested/azuredeploy.json

uriComponentToString

uriComponentToString(uriEncodedString)

Возвращает строку со значением, закодированным в формате URI.

Пространство имен: sys.

Параметры

Параметр Обязательное поле Type Описание
uriEncodedString Да строка Значение, закодированное в формате URI, которое необходимо преобразовать в строку.

Возвращаемое значение

Декодированная строка со значением, закодированным в формате URI.

Примеры

В следующем примере показано, как использовать функции uri, uriComponent и uriComponentToString:

var uriFormat = uri('http://contoso.com/resources/', 'nested/azuredeploy.json')
var uriEncoded = uriComponent(uriFormat)

output uriOutput string = uriFormat
output componentOutput string = uriEncoded
output toStringOutput string = uriComponentToString(uriEncoded)

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
uriOutput Строка http://contoso.com/resources/nested/azuredeploy.json
componentOutput Строка http%3A%2F%2Fcontoso.com%2Fresources%2Fnested%2Fazuredeploy.json
toStringOutput Строка http://contoso.com/resources/nested/azuredeploy.json

Следующие шаги