Spec-Zone.ru › Nim

std/strbasics

Источник Редактировать

Этот модуль предоставляет некоторые высокопроизводительные операции со строками.

Экспериментальный API, может быть изменён.

Процедуры

proc add(x: var string; y: openArray[char]) {....raises: [], tags: [], forbids: [].}
Объединяет x и y на месте. y не должно перекрываться с x для поддержки будущих memcpy оптимизаций. Источник Редактировать
func setSlice(s: var string; slice: Slice[int]) {....raises: [], tags: [],
    forbids: [].}
Версия на месте для substr.

Пример:

import std/sugar

var a = "Hello, Nim!"
doAssert a.dup(setSlice(7 .. 9)) == "Nim"
doAssert a.dup(setSlice(0 .. 0)) == "H"
doAssert a.dup(setSlice(0 .. 1)) == "He"
doAssert a.dup(setSlice(0 .. 10)) == a
doAssert a.dup(setSlice(1 .. 0)).len == 0
doAssert a.dup(setSlice(20 .. -1)).len == 0


doAssertRaises(AssertionDefect):
  discard a.dup(setSlice(-1 .. 1))

doAssertRaises(AssertionDefect):
  discard a.dup(setSlice(1 .. 11))
Источник Редактировать
func strip(a: var string; leading = true; trailing = true;
           chars: set[char] = whitespaces) {.inline, ...raises: [], tags: [],
    forbids: [].}

Версия на месте для strip. Удаляет ведущие или хвостовые chars (по умолчанию: пробелы).

Если leading равно true (по умолчанию), удаляются ведущие chars. Если trailing равно true (по умолчанию), удаляются хвостовые chars. Если оба false, строка остаётся неизменной.

Пример:

var a = "  vhellov   "
strip(a)
assert a == "vhellov"

a = "  vhellov   "
a.strip(leading = false)
assert a == "  vhellov"

a = "  vhellov   "
a.strip(trailing = false)
assert a == "vhellov   "

var c = "blaXbla"
c.strip(chars = {'b', 'a'})
assert c == "laXbl"
c = "blaXbla"
c.strip(chars = {'b', 'a', 'l'})
assert c == "X"
Источник Редактировать

© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/strbasics.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API