Вставить пробел перед заглавными буквами notepad
У меня есть огромный список слов (каждое слово в одной строке в txt-файле), и некоторые слова должны быть заглавными вручную (например, вручную), поэтому я искал, есть ли ярлык в notepad/" >notepad++ (мой редактор в настоящее время), чтобы автоматически заглавную первую букву строки, но не смог найти ее. Нет? Если нет, можете ли вы посоветовать мне альтернативную программу windows, чтобы быстро сделать это с помощью простого ярлыка (так что я могу пройти с помощью клавиши со стрелкой вниз и использовать ярлык всякий раз, когда нужно по конкретному слову)? спасибо большое
Это можно легко сделать, если первые буквы латинского алфавита. Но этот метод не работает с нелатинскими (например кириллические) символы. Просто нажмите Ctrl + F , включите флажок" регулярное выражение " и найдите
заменить (заменить все)
". соответствует новой строке " флажок должен быть снят
для тех,кому трудно следовать текстовым инструкциям, вот скриншот. (ответ кредит @Placido)
включить режим столбцов в n++ , а затем выберите первый столбец. измените регистр на верхний регистр.
это будет капитализировать каждую первую букву строки. Вы можете изменить этот метод, чтобы заработать в других условия
в Notepad++ v7 доступен ярлык.3.2 Для заглавной буквы первой буквы строки(случай предложения).
Не уверен в предыдущих версиях.
вы можете сделать это быстро в unortodox пути, но вам потребуется TotalCommander.
создайте новый файл с именем, содержащим текст, который вы хотите использовать. Выберите этот файл в TotalCommander. Нажмите Ctrl+M (Инструмент С Несколькими Именами). В раскрывающемся списке "верхний / нижний регистр "выберите" первый из каждого слова верхнего регистра".
Под Windows. Существует обратная сторона: ограничение имени файла до 255 символов, если я не ошибаюсь. И некоторые специальные символы будет опущен (слеши, кавычки, п.)
также подобное программное обеспечение, как Far, должно работать так же, как я думаю.
сначала вы выбираете первый столбец, нажав alt + ctrl+shift. После выбора просто нажмите клавиши ctrl+U Проблема решена
вы можете сделать это быстро в MS Word, выделив список, а затем с помощью shift + f3 Это будет цикл через все-верхние, все-нижние или первые буквы шапки.
вы пытались записать макрос, а затем назначить его ярлыку?
например, замена может быть:
и выберите Macro → Modify Shortcut/Delete Macro. в верхнем меню и назначить ярлык.
это результирующий макрос, который я извлек из C:\Users\%USERNAME%\AppData\Roaming\Notepad++\shortcuts.xml .
У меня есть веревочка "MySites" . Я хочу поставить пробел между My и Sites .
Как я могу сделать это в jQuery или JavaScript?
Не могли бы вы предоставить более подробную информацию? Какую общую форму вы хотите разделить? Если это всего лишь одна строка, почему бы просто не вставить пробел вручную?
определить шаблон, которому он должен соответствовать, например, «пробел, когда он находит 'My' в строке» или «добавить пробел перед каждым заглавным символом, если это не первый символ», или .
«между личными сайтами». Как вы можете разместить пробел между одной вещью? Я предполагаю, что вы хотите получить "Мои сайты" в качестве вывода.
Вы можете просто добавить пробел перед каждым символом верхнего регистра и обрезать начальные и конечные пробелы.
Он «не работает» для аббревиатур, как мы можем предотвратить его срабатывание, когда 2 или более последовательных заглавных буквы?
@ToniMichelCaubet легко, изменить регулярное выражение , как это: /([A-Z]+)/g . Знак + гарантирует, что вы сопоставите как можно больше последовательных заглавных букв.
@Kristina В скобках написано: «Я - переменная». Без круглых скобок для MySites будет получен ответ "$ 1y $ 1ites".
Это найдет каждое вхождение символа нижнего регистра, за которым следует символ верхнего регистра, и вставит между ними пробел:
Для особых случаев, когда встречаются 2 последовательные заглавные буквы (например, ThisIsATest), добавьте дополнительный код ниже:
@Ceres: Хороший вопрос. В этом случае можно было бы обработать, вместо этого вставив пробел перед любой заглавной буквой, которая не является первым символом, но у вас все еще есть случаи, которые не могут быть обработаны без распознавания слов, например "RunThisSQLQuery" .
для «ThisIsATest» - (не считая «RunThisSQLQuery») вы можете сделать это: str.replace (/ ([AZ]) / g, '$ 1'). trim ()
Как применять регулярные выражения в Notepad++, подробно показано вот здесь.
. | Точка. Обозначает любой символ |
\ | Экранирующий символ. Символы которые экранируются: ^, [, ., $, |
^ | Крышка. Начало строки |
$ | Конец строки |
\d | Любая цифра |
\D | Не цифра |
\s | Пробел, табуляция, перенос строки |
\S | Не пробел |
\w | Любая буква латиницы, цифра, или знак подчёркивания |
\W | Не латиница, не цифра, не подчёркивание |
| | Или. Соединяет несколько вариантов |
\b | Граница слова. Применяется когда нужно выделить, что искомые символы являются словом, а не частью другого слова |
\B | Не граница слова |
\ | Начало слова |
\> | Конец слова |
\A | Начало текста |
\Z | Конец текста |
* | Повторитель. Означает что предшествующий символ может работать 0 и более раз |
+ | Количество предшествующего не менее 1-го. |
? | Ограничитель. Не более одного раза |
[ ] | В квадратных скобках задаются символы к поиску, например [a-яА-Я], или 8 |
[^ ] | Исключает из поиска символы указанные в квадратных скобках |
() | В круглые скобки заключаются все комбинации с "или" и поиск начала и конца строк |
В фигурных скобках указывается точное количество вхождений, например если надо две цифры, то \d, если две или четыре, то \d, если четыре и более, то | |
\n | Новая строка |
Шаблоны регулярных выражений
Заключить каждую строку в теги html, кавычки, скобки
Найти:
(^.*$)
Заменить на:
\1
Можно вместо тега или кавычки, или скобки. Если не сработает, то попробуйте добавить перед ними символ экранированияУбрать все теги html, вместе с содержимым, оставить только текст между открывающим и закрывающим тегом
Найти даты написанные в формате дд месяц гггг г., остальное убрать
Найти дату со слешем, например: 20/5/2020, остальное убрать
Найти даты в формате дд.мм.гггг и дд-мм-гггг, остальное убрать
Найти всё между кавычек
Найти всё между скобок
Найти все адреса электронной почты, а остальное всё убрать
Удалить всё, оставив только ссылки
Найти почтовый индекс, а остальное убрать
Поменять местами ФИО и дату рождения. Например "Кузнецов Андрей Николаевич 26.10.1983", на "26.10.1983 Кузнецов Андрей Николаевич"
Перенести буквы в начало, в выражениях формата 6465C, 498558JR, 1286458975KTD и т.д.
Удалить атрибут с разными URL
Заменить один html тег на другой, открывающую и закрывающую части
Удалить всё в строке после определённого символа или слова, вместе с ним
Удалить всё после символа использующегося и в регулярных выражениях, например *
Сделать перенос строки перед каждой заглавной буквой
Удалить из ссылки всё, кроме домена
Убрать всю табуляцию
Удалить все комментарии из html кода
Удалить все комментарии из CSS кода
Удалить все комментарии вида // из PHP кода.
Привести к одному размеру все находящиеся в открытых файлах картинки
Найти:
Заменить на:
Удалить в строке всё после пробела
Удалить во всех строках всё до определённого символа, например до ?
Удалить все строки в которых определённое число символов, например меньше 100
Удалить все запятые, после которых идёт буква или пробел, но не цифра
Найти и, если надо, удалить время в формате ММ:СС. Актуально для стенограмм и расшифровок видео
Взять в круглые скобки время в формате ММ:СС, находящееся в любой части текста
Добавить в каждую пустую строку
Отредактировать расшифровку видео
1. Убираем раскадровку по времени
2. Объединяем предложения, с разделением пустой строкой
Найти все фрагменты кода расположенные между двумя словами
учитывая строку "ThisStringHasNoSpacesButItDoesHavecapitals", каков наилучший способ добавления пробелов перед заглавными буквами. Таким образом, конечная строка будет "эта строка не имеет пробелов, но у нее есть заглавные буквы"
вот моя попытка с RegEx
regexes будет работать нормально (я даже проголосовал за ответ Мартина Браунса), но они дороги (и лично я нахожу любой шаблон длиннее, чем пара символов, непомерно тупых)
будет делать это 100 000 раз в 2,968,750 тиков, регулярное выражение займет 25,000,000 ТИКов (и это при составленном регулярном выражении).
это лучше, для заданного значения лучше (т. е. быстрее), однако это больше кода для поддержания. "Лучше" часто компромисс конкурирующих требований.
надеюсь, что это помогает :)
обновление
Прошло много времени с тех пор, как я смотрел на это, и я просто понял, что тайминги не обновлялись с тех пор, как код изменился (он только немного изменился).
в строке с "Abbbbbbbbb", повторенной 100 раз (т. е. 1,000 байт), запуск 100 000 преобразований принимает функцию ручного кодирования 4,517,177 ТИКов, а приведенное ниже регулярное выражение принимает 59,435,719, делая ручное кодирование функция запускается в 7,6% времени, которое занимает регулярное выражение.
обновление 2 Будут ли в нем учтены аббревиатуры? Теперь будет! Логика состояния if довольно неясна, как вы можете видеть, расширяя ее до этого .
. совсем не помогает!
вот простой метод, который не беспокоится о аббревиатурах
у вашего решения есть проблема в том, что он ставит пробел перед первой буквой T, поэтому вы получаете
чтобы обойти это, Найдите букву нижнего регистра, предшествующую ей, а затем вставьте пробел посередине:
Edit 1:
если вы используете @"(\p)(\p)" Он также будет подбирать акцентированные символы.
Edit 2:
если ваши строки могут содержать аббревиатуры, которые вы можете использовать это:
таким образом, "DriveIsSCSICompatible" становится "диск совместим с SCSI"
не тестировал производительность, но здесь в одной строке с linq:
Я знаю, что это старый, но это расширение я использую, когда мне нужно сделать это:
Это позволит вам использовать MyCasedString.ToSentence()
все эти решения по существу неправильны для современного текста. Нужно использовать то, что понимает кейс. Поскольку Боб попросил другие языки, я дам пару за Perl.
Я предоставляю четыре решения, начиная от худшего до лучшего. Только лучший, всегда прав. У остальных проблемы. Вот тест, чтобы показать вам, что работает, а что нет, и где. Я использовал подчеркивания, чтобы вы могли видеть, где были пробелы поставьте, и я отмечу как неправильное все, что, ну, неправильно.
кстати, почти все здесь выбрали первый способ, тот, который отмечен как "худший". Некоторые выбрали второй путь, помеченный "OK". Но никто до меня не показывал вам, как сделать "лучший" или "лучший" подход.
вот тестовая программа с четырьмя методами:
когда вы можете забить то же самое, что и "Лучшее" в этом наборе данных, вы будете знать, что сделали это правильно. А до тех пор-нет. Никто здесь не сделал лучше, чем "ОК", и большинство сделали это"хуже". Я смотрю вперед к видеть кто-то пост правильный код♯ ℂ.
Я замечаю, что код подсветки StackOverflow снова жалко сутулится. Они делают все те же старые хромые, что и (большинство, но не все) из остальных бедных подходов, упомянутых здесь. Разве не давно пора положить ASCII на покой? Это больше не имеет смысла, и притворяться, что это все, что у тебя есть. это просто неправильно. Это создает плохой код.
Я решил сделать простой метод расширения, основанный на двоичном коде Worrier, который будет правильно обрабатывать аббревиатуры и повторяется (не будет калечить уже разнесенные слова). Вот мой результат.
вот единичные тесты, которые эта функция проходит. Я добавил к этому списку большинство дел, предложенных Кристом. Три из тех, которые он не проходит (два - просто римские цифры), комментируются:
Binary Worrier, я использовал ваш предлагаемый код, и это довольно хорошо, у меня есть только одно незначительное дополнение к нему:
я добавил условие !char.IsUpper(text[i - 1]) . Это исправило ошибку, которая заставила бы что-то вроде "AverageNOX" превратиться в "Average N O X", что, очевидно, неправильно, поскольку оно должно читать "Average NOX".
к сожалению, у этого все еще есть ошибка, что если у вас есть текст "FromAStart", вы получите "от AStart".
любые мысли о фиксации это?
на \B это отрицается \b , поэтому он представляет собой границу без слов. Это означает, что шаблон соответствует " Y " в XYzabc , но не Yzabc или X Yzabc . Как маленький бонус, вы можете использовать это на строке с пробелами в ней, и это не удвоит их.
то, что у вас есть, работает отлично. Просто не забудьте переназначить value к возвращаемому значению этой функции.
Вводится строчка, например, HaveaNiceDay.
Нужно чтобы выводилось Havea Nice Day, то есть перед заглавной буквой ставится пробел. Как вставить пробел в принципе понятно, но как сдвинуть вправо на один? Если можно - не кодом, а словами, буду благодарен.
Проверить, есть ли точка с пробелом перед каждой большой буквой строки
программа которая проверяет есть ли точка с пробелом перед каждой большой буквой строки кроме.
Дана строка латинских букв. После заглавной буквы поставить вставить эту же прописную букву и наоборот
Дана строка латинских букв. После заглавной буквы поставить вставить эту же прописную букву и.
Перед каждой буквой третьего слова поставить '/'. Лишние символы (с 81-ого) отбросить
Задание : Перед каждой буквой третьего слова поставить '/'. Лишние символы (с 81-ого) отбросить.
Проверить наличие в тексте одного из знаков разделителей (“.” , ”?”, ”!”) перед каждой большой русской буквой
Помогите пожалуйста. Проверить наличие в тексте одного из знаков разделителей (“.” , ”?”, ”!”).
Чтобы сильно не "париться" сделай так:
1) заведи второй массив бОльшего размера
2) читаешь символ за символом из исходной строки.
3) если буква строчная - просто кладешь ее во второй массив
4) если заглавная - во второй массив кладешь пробел, а за ним заглавную букву.
5) вытряхиваешь на экран второй массив
Чтобы сильно не "париться" сделай так:
1) заведи второй массив бОльшего размера
2) читаешь символ за символом из исходной строки.
3) если буква строчная - просто кладешь ее во второй массив
4) если заглавная - во второй массив кладешь пробел, а за ним заглавную букву.
5) вытряхиваешь на экран второй массив
Дело в том, что у меня, когда написано в цикле - не работает, просто затирает заглавные буквы, но не смещает. И , кстати, когда запускаешь тот код, который работает в конце еще "мусор" какой-то, в виде нескольких символов.
Дело в том, что у меня, когда написано в цикле - не работает, просто затирает заглавные буквы, но не смещает. И , кстати, когда запускаешь тот код, который работает в конце еще "мусор" какой-то, в виде нескольких символов.
Потому что, когда ты встречаешь заглавную букву, ты добавляешь в новый массив 2 символа (пробел и саму букву), значит и шаг в этом случае должен быть 2 по n, а у тебя 1. А у тебя получается что ты встречаешь заглавную букву , добавляешь в новый массив пробел и букву, прибавляешь к n 1, а значит в следующем шаге цикла ты затрешь эту же букву.
Читайте также: