S прописная: How to Write an Uppercase S
Переключение регистра символов | Vim Советы Вики
в: VimTip, использование
Вы можете изменить регистр текста:
- Переключить случай “
Hello
” на “hello
” сg~
, затем движение. - Верхний регистр “
Hello
” до “HELLO
” сgU
затем движение. - Нижний регистр “
Hello
” до “hello
” сgu
затем движение.
Кроме того, вы можете визуально выделить текст, а затем нажать ~
для переключения регистра, или U
для преобразования в верхний регистр, или u
для преобразования в нижний регистр.
Содержимое
- 1 Пример
- 2 Титульный корпус
- 3 Чемодан
- 4 Каталожные номера
- 5 комментариев
Примеры[]
-
~
- Переключение регистра символа под курсором или всех визуально выделенных символов.
-
3~
- Переключить регистр следующих трех символов.
-
г~3 нед
- Переключить регистр следующих трех слов.
-
г~в
- Переключить регистр текущего слова (внутреннее слово – курсор в любом месте слова).
-
г~$
- Переключить регистр всех символов в конец строки.
-
г~~
- Переключение регистра текущей строки (аналогично
В~
).
Выше используется ~ для переключения регистра. В каждом примере вы можете заменить ~ на u, чтобы преобразовать в нижний регистр, или на U, чтобы преобразовать в верхний регистр. Например:
-
У
- Заглавные буквы визуально выделенного текста.
- Сначала нажмите
v
илиV
, затем переместите курсор для выбора текста. - Если вы не выделяете текст, нажатие
U
отменит все изменения в текущей строке.
-
гУУ
- Изменить текущую строку на верхний регистр (аналогично
VU
).
-
- Изменить текущее слово на верхний регистр.
-
и
- Нижний регистр визуально выделенного текста.
- Если вы не выделяете текст, нажатие
u
отменит последнее изменение.
-
гуу
- Изменить текущую строку на нижний регистр (аналогично
Vu
).
Title case[]
Команда подстановки :s
может изменить регистр (см. :help s/\u).
Следующее преобразует текущую строку в регистр заголовков (все строчные, кроме начальных прописных букв):
:s/\<\(\w\)\(\w*\)\>/\u\1\L\2/g
Объяснение Шаблон поиска \<\(\w\)\(\w*\)\>
, который ищет
(начало слова), затем \w
(символ слова ), затем \w*
(ноль или более символов слова), затем \>
(конец слова). \(...\)
создают подвыражения, которые будут вызываться с помощью \1
и \2
в замене. Замена \u\1\L\2
заменяет два преобразованных подвыражения: \u
преобразует первый символ следующего в верхний регистр, а \L
преобразует все следующее в нижний регистр.
Этот подход имеет недостатки в тех случаях, когда слова могут содержать то, что регулярное выражение распознает как несловные символы, например апостроф в " Я буду "или" она ". Альтернатива, основанная на пробелах для границ слов:
:s/\<\(\w\)\(\S*\)/\u\1\L\2/g
Другой альтернативой является замена разделителя на # и использование \v
(очень волшебно), чтобы уменьшить необходимость экранирования символов.
:s#\v(\w)(\S*)#\u\1\L\2#g
Twiddle case[]
С помощью следующего (например, в vimrc) вы можете визуально выделить текст, затем нажать ~
, чтобы преобразовать текст в ВЕРХНИЙ РЕГИСТР
, затем нижний регистр
, затем Заглавный регистр
. Продолжайте нажимать ~
, пока не получите нужный чехол.
функция! TwiddleCase(ул.) если a:str ==# toupper(a:str) пусть результат = tolower(a:str) elseif a:str ==# tolower(a:str) пусть результат = замена(a:str,'\(\<\w\+\>\)', '\u\1', 'g') еще пусть результат = toupper(a:str) конец вернуть результат конечная функция vnoremap ~ y:call setreg('', TwiddleCase(@"), getregtype(''))gv""Pgv
Ссылки[]
- :справка кейс
- :help 'tildeop'
Комментарии[]
Следующие слова будут пропускать однобуквенные слова и слова, написанные не в верхнем регистре. Он также учитывает неанглийские латинские символы.
:s/\v\C<([A-ZÀ-Ý])([A-ZÀ-Ý]+)>/\u\1\L\2/g
--Дженни 165.2.186.10 19:05, 5 апреля 2012 г. (UTC)
- Хорошо, спасибо. Я добавил
\C
к вашей команде выше, чтобы сделать поиск чувствительным к регистру (он не будет пропускать слова в нижнем регистре, если'ignorecase'
установлен, если не присутствует\C
). Джон Беккет 09:58, 6 апреля 2012 г. (UTC) - ----спасибо за помощь! Я ищу пример, который изменит регистр при замене совпадений, а затем сохранит исходный регистр в оставшейся части... что-то вроде этого
- с/\(....\)abc\(....\)DeF\(....\)/\U\1DeF\L\2def ?? \3/ первое совпадение принудительно записывается в верхнем регистре, но также изменяет регистр следующего 'abc'. Второе совпадение принудительно пишется в нижнем регистре, как и следующее «DeF».... ?? выше, мы надеемся, сообщит замене, чтобы не заставлять строчные буквы, а сохранили исходный регистр 3-го совпадения... надеюсь, что это имеет смысл...
- спасибо, Джим Лумпкин Джимлумпкин (разговор) 19:45, 7 октября 2020 г. (UTC)
Мне дали самый полезный совет проверить документ :help s\L, в котором указано, что замена конца выполняется с помощью \e или \E... всем спасибо!
Джимлампкин (разговор) 19:57, 8 октября 2020 г. (UTC)
Контент сообщества доступен по лицензии CC-BY-SA, если не указано иное.
регулярное выражение - проверьте, является ли строка в верхнем регистре и цифры
спросил
Изменено 7 лет, 5 месяцев назад
Просмотрено 2к раз
Я хочу проверить, содержит ли строка только прописные буквы и цифры. Я попытался решить эту проблему с помощью RegExp, и пока у меня есть:
Функция CheckForInvalidChars() тусклый б Установить re = новое регулярное выражение re.Pattern = "[A-Z_0-9]" b = повторный тест ("eS") сообщение б Конечная функция
Однако переменная "b" возвращает значение true, так как я предполагаю, что она находит совпадение в "S", хотя я хочу, чтобы эта конкретная строка возвращала значение false, поскольку не все буквы в верхнем регистре. Как мне добиться этого?
Я пытался сделать это и с помощью функций, используя IsNumeric
, но не могу найти IsUpperCase 9\w+$"
CheckForInvalidChars = re.