Подстрока в скрипте vim - PullRequest
0 голосов
/ 09 июня 2018

Есть ли substr() подобная функция для получения подстроки в скрипте vim?Если нет, то какая лучшая замена или альтернатива для такого рода задач?

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

Зависит от того, хотите ли вы диапазон байтов или диапазон символов.Для диапазона байтов от b до e это str[b:e], но для диапазона символов вам потребуется функция byteidx:

str[byteidx(str,b):byteidx(str,e+1)-1]

Для многобайтовых символов результаты отличаются.

0 голосов
/ 05 октября 2018

Для многобайтовых символов также есть :h strcharpart()

Если функция не существует в вашем старом варианте Vim, ее можно эмулировать, например,

function! lh#encoding#strpart(mb_string, p, l)
  " call lh#assert#value(lh#encoding#strlen(a:mb_string)).is_ge(a:p+a:l)
  return matchstr(a:mb_string, '.\{,'.a:l.'}', 0, a:p+1)
endfunction
0 голосов
/ 09 июня 2018

работает как python:

echo '0123456'[2:4]
234

Для подробной документации:

:h expr-[:]
...