Разное

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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *