Как поставить пробел перед заглавной буквой
Перейти к содержимому

Как поставить пробел перед заглавной буквой

Добавить пробелы перед заглавными буквами

учитывая строку «ThisStringHasNoSpacesButItDoesHavecapitals», каков наилучший способ добавления пробелов перед заглавными буквами. Таким образом, конечная строка будет «эта строка не имеет пробелов, но у нее есть заглавные буквы»

вот моя попытка с RegEx

29 ответов

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()

Добро пожаловать в Unicode

все эти решения по существу неправильны для современного текста. Нужно использовать то, что понимает кейс. Поскольку Боб попросил другие языки, я дам пару за Perl.

Я предоставляю четыре решения, начиная от худшего до лучшего. Только лучший, всегда прав. У остальных проблемы. Вот тест, чтобы показать вам, что работает, а что нет, и где. Я использовал подчеркивания, чтобы вы могли видеть, где были пробелы поставьте, и я отмечу как неправильное все, что, ну, неправильно.

кстати, почти все здесь выбрали первый способ, тот, который отмечен как «худший». Некоторые выбрали второй путь, помеченный «OK». Но никто до меня не показывал вам, как сделать «лучший» или «лучший» подход.

вот тестовая программа с четырьмя методами:

когда вы можете забить то же самое, что и «Лучшее» в этом наборе данных, вы будете знать, что сделали это правильно. А до тех пор-нет. Никто здесь не сделал лучше, чем «ОК», и большинство сделали это»хуже». Я смотрю вперед к видеть кто-то пост правильный код♯ ℂ.

Я замечаю, что код подсветки StackOverflow снова жалко сутулится. Они делают все те же старые хромые, что и (большинство, но не все) из остальных бедных подходов, упомянутых здесь. Разве не давно пора положить ASCII на покой? Это больше не имеет смысла, и притворяться, что это все, что у тебя есть. это просто неправильно. Это создает плохой код.

Я решил сделать простой метод расширения, основанный на двоичном коде Worrier, который будет правильно обрабатывать аббревиатуры и повторяется (не будет калечить уже разнесенные слова). Вот мой результат.

вот единичные тесты, которые эта функция проходит. Я добавил к этому списку большинство дел, предложенных Кристом. Три из тех, которые он не проходит (два — просто римские цифры), комментируются:

Binary Worrier, я использовал ваш предлагаемый код, и это довольно хорошо, у меня есть только одно незначительное дополнение к нему:

я добавил условие !char.IsUpper(text[i — 1]) . Это исправило ошибку, которая заставила бы что-то вроде «AverageNOX» превратиться в «Average N O X», что, очевидно, неправильно, поскольку оно должно читать «Average NOX».

к сожалению, у этого все еще есть ошибка, что если у вас есть текст «FromAStart», вы получите «от AStart».

любые мысли о фиксации это?

убедитесь, что вы не размещение пробелов в начале строки, но вы are положив их между двумя столицами. Некоторые из ответов здесь не касаются одного или обоих этих моментов. Есть другие способы, кроме regex, но если вы предпочитаете использовать это, попробуйте следующее:

на \B это отрицается \b , поэтому он представляет собой границу без слов. Это означает, что шаблон соответствует » Y » в XYzabc , но не Yzabc или X Yzabc . Как маленький бонус, вы можете использовать это на строке с пробелами в ней, и это не удвоит их.

то, что у вас есть, работает отлично. Просто не забудьте переназначить value к возвращаемому значению этой функции.

Как сделать в Ворде что бы инициалы не отрывались от фамилии при переносах?

Как сделать в Ворде что бы инициалы не отрывались от фамилии при переносах?

Когда печатаешь текст, между фамилией и инициалами ставлю пробел. Но при изменении форматирования (например изменение полей) фамилия и инициалы, если они оказались на границе строк, разрываются. Как называется функция в Ворде которой надо воспользоваться что бы они переносились вместе?

Действительно, при оформлении документов фамилия и инициалы должны располагаться на одной строке.

Я тоже не один раз сталкивалась с этой проблемой, когда в Ворде при наборе текста разрываются инициалы с фамилией. Приходится редактировать текст, "подтягивать" инициалы к фамилии.

На самом деле, есть решение этой проблемы, для того, чтобы фамилия и инициалы (имя и отчество) находились на одной строке можно воспользоваться неразрывным пробелом.

Поставить неразрывный пробел можно двумя способами:

  • сочетанием клавиш CTRL+SHIFT+Пробел;
  • использование панели управления, открываем Вставка => Символ => Специальные знаки.

В Ворде есть специальная функция, которая называется "неразрывный пробел". С помощью нее как раз и получится, что инициалы будут на одной строке вместе с фамилией.

Поставить такую фукцию как неразрывный пробел можно двумя способами.

Первый способ такой: заходим во вкладку "вставка", далее находим там кнопку "символ", далее "специальные знаки".

Но можно сделать намного проще, нажать комбинацию клавиш CTRL+SHIFT+Пробел и таким образом поставить неразрывный пробел.

Чтобы фамилия и имя отчество в документе всегда были расположены на одной строке надо использовать неразрывный пробел, кторый вводится сочетанием CTRL+SHIFT+Пробел или меню Вставка/Символ вкладка Специальные знаки

Если текст уже набран, то можно заменить пробел неразрывным пробелом по всему тексту, используя режим подстановочные знаки.

Заменить неразрывным пробелом пробел между маленькой буквой и заглавной буквой с точкой после которой следует заглавная буква с точкой (Иванов И.И.)

в поле Найти пишется выражение:

в поле Заменить на пишется выражение:

\1^s\2

Если возможно что инициалы находятся перед фамилией (И.И. Иванов) то

Заменить неразрывным пробелом пробел между заглавной буквой с точкой после которой следует заглавная буква с точкой и заглавной буквой (И.И. Иванов )

в поле Найти пишется выражение:

в поле Заменить на пишется выражение:

\1^s\2

Есть в Ворде такая штука, которая называется неразрывный пробел. Именно им нужно пользоваться при наборе текста, отделяя фамилию от инициалов, а инициалы — друг от друга, или еще в подобных случаях, когда требуется, чтобы выражение с пробелами воспринималось программой как одно слово. Вставляется он сочетанием клавиш Ctrl + Shift + Пробел, а в режиме "Отображать все символы" (или "Отображать скрытые символы") выглядит наподобие знака градуса, в отличие от обычного пробела, который отображается как точка в центре строки.

Ну а если текст уже кем-то набран, все гораздо хуже. Есть шанс, что придется править вручную, так как воспользоваться заменой или скриптом не всегда возможно.

О том, как правильно писать фамилию и инициативы, с пробелом или без можно будет в этом вопросе на проекте Большой Вопрос.

Могу сказать, что неважно, что стоит в Ворде текст или числа, методика будет одинаковая. Чтобы текст или числа не переносились на другую строку, необходимо будет сделать неразрывный пробел.

Есть несколько способов сделать неразрывный пробел.

Первый способ — между инициалами и фамилией нужно нажать на три клавиши одновременно "CTRL+SHIFT+Пробел".

Есть и второй способ — нужно зайти во вкладку "Вставка", далее "Символ", "Специальные символы". Этот символ выглядит следующим образом:

Неразрывный пробел, можно будет видеть визуально только при включение кнопки "отображение знаков табуляции" в простом режиме редактирования, неразрывный пробел ни чем не отличается от обычного, разрывного.

А поставить его можно с помощью сочетания клавиш Shift+Ctrl + клавиша пробел. Нажимаем их все три вместе.

Есть такое понятие, как "неразрывный пробел", поставив который вы и сможете обезопасить себя от переноса фамилии на другую строку в отрыве от инициалов. Как поставить неразрывный пробел? Вместо привычного пробела нажимают Ctrl и одновременно Shift а также одновременно Space bar (это, собственно, название клавиши пробел). Если вы в обычном режиме просмотра, то все выглядит как обычно. В режиме просмотра скрытых символов это будет выглядеть так:

Такие себе маленькие кружочки в верхнем регистре, которые дают сигнал текстовому редактору, что инициалы и фамилия — цельный неразрывный комплекс, который при переносе разбивать нельзя. Кстати, можно применить для символа нужного вам неразрывного пробела так называемый ALT-код, он соответствует цифре 0160, то есть поставили курсор в нужном месте, нажали клавишу на клавиатуре с обозначением ALT и набрали цифровой код.

Интервалы в Word

В Microsoft Word просто и удобно создавать и редактировать документы – набирать, копировать, вырезать текст, а презентабельное оформление осуществляется в автоматическом режиме. Благодаря специальным опциям задаются величины отступов и интервалов – все настраивается под индивидуальные потребности пользователя.

Межстрочный интервал в Word

Расстояние между строками зависит от используемого стиля (шрифт, размер). Оно может быть слишком большим, когда текст растянут на половину листа и его не очень удобно читать, или слишком маленьким, когда одна строка наезжает на другую. Уменьшение этого значения актуально перед печатью документа для личного пользования (в целях экономии бумаги), а также для выделения определенных фрагментов из всего документа.

Как уменьшить или увеличить интервал между строками

По умолчанию в Word установлено расстояние 1 или 1,5, что может не совпадать с требованиями методички по оформлению работы. Для изменения значения необходимо:

  1. Выделить весь текст, установив курсор в любом месте и используя комбинацию клавиш Ctrl+A, или только его часть с помощью левой кнопки мышки.
  2. Во вкладке «Главная» в разделе «Абзац» кликнуть по иконке в правом нижнем углу для открытия настроек.
  3. На экране отобразится диалоговое окно. В пункте «Междустрочный» из списка выбрать желаемый вариант, также можно вручную задать цифровое значение. Образец покажет, как будет выглядеть текст при том или ином интервале.
  4. Нажать «Ок».

Есть и другие способы вызова меню «Абзац»:

  1. Кликнуть правой кнопкой мышки и выбрать одноименный пункт.
  2. Во вкладке «Главная» в разделе «Абзац» справа от вариантов выравнивания клацнуть левой кнопкой по иконке (с горизонтальными линиями и стрелками вверх-вниз) и выбрать пункт «Другие варианты…». Здесь же можно сразу выбрать конкретное значение, кликнув по нему.

Изменение применяется к выделенному фрагменту или к абзацу, где стоит курсор.

Чтобы сделать полуторный интервал, можно просто выделить текст и зажать одновременно клавиши Ctrl+5, одинарный – Ctrl+1.

Настройка интервала по умолчанию

Устанавливается конкретное межстрочное расстояние для всех последующих документов посредством опции «Стили»:

  1. Во вкладке «Главная» найти опцию «Изменить стили».
  2. В раскрывшемся меню «Интервал» выбрать один из встроенных вариантов.
  3. Можно настроить свое пользовательское расстояние для абзаца, кликнув по соответствующему пункту. В диалоговом окне указать все значения, а также отметить галочкой пункт «В новых документах, использующих этот шаблон».
  4. Сохранить изменения, клацнув по «Ок». Теперь при создании нового документа по умолчанию будет применяться выбранный стиль.

Как убрать интервал между абзацами

Расстояние между абзацами настраивается таким же образом: щелчок по иконке квадрата со стрелкой в разделе «Абзац» или правой кнопкой мышки по любому месту в документе и выбор одноименной опции.

В открывшемся диалоговом окне следует обратить внимание на раздел «Интервал».

«Перед» – размер свободного места перед абзацем, «После» – размер свободного места после абзаца. Если не добавлять расстояние между абзацами одного стиля, в результате свободного пространства не будет.

Убрать интервалы между абзацами возможно, поставив значение «0» в полях «Перед» и «После» – для всего документа или отдельных абзацев, это настраивается при помощи выделения текста.

В разделе «Отступ» устанавливается красная строка (от левого края) и ее значение. По умолчанию – 1,25 см. Чтобы убрать отступ, достаточно поставить «Нет» в пункте «Первая строка».

Цифровые значения отступа и интервала настраиваются также во вкладке «Разметка страницы».

Интервал между словами в Word

Пользователи часто сталкиваются с проблемой, когда слова разделены большими пробелами. Пробелы в таких случаях сильно заметны и портят внешний вид документа.

Как убрать большие пробелы между словами

Есть несколько способов решения проблемы:

  1. Удалить длинный пробел, установить курсор между словами и одновременно нажать сочетание клавиш Shift+Ctrl+пробел.
  2. Автозамена символов – нажать Ctrl+H или выбрать опцию «Заменить» в разделе «Редактирование» во вкладке «Главная». В первое поле вставить длинный пробел, во второе – обычный. Кликнуть по кнопке «Заменить все».
  3. Если не требуется выравнивание по ширине, выделить текст и выровнять его по левому краю.
  4. Можно сделать переносы слов, если методичка по оформлению документа это позволяет. Во вкладке «Разметка страницы» активировать опцию «Расстановка переносов» – «Авто».
  5. Чтобы вручную не искать лишние пробелы, во вкладке «Главная» в разделе «Абзац» стоит активировать опцию «Отобразить все знаки» (расположена справа от сортировки). Пробел – это одна точка между словами. Если будет несколько точек рядом или другие непонятные символы, убрать все лишние и оставить одну точку. Повторно кликнуть по значку отображения знаков.
  6. Выделить фрагмент текста, перейти по пути «Найти» – «Расширенный поиск» (расположен во вкладке «Главная»). В открывшемся окне ввести пробел и нажать «Найти в» – «Текущий фрагмент». Отобразятся все пробелы. Кликнуть по кнопке «Больше», перейти по пути «Формат» – «Шрифт» – «Дополнительно». Выбрать уплотненный вариант и вписать нужное значение. Нажать «Ок».

Интервал между буквами в Word

В процессе редактирования документа для выделения какого-либо фрагмента текста можно изменить расстояние между буквами – расширить или сжать его.

Как убрать межбуквенный интервал

Если буквы слиты так, что не разобрать слово, или, наоборот, несколько слов растянуто на целую строку, необходимо сделать следующее:

  1. Выделить фрагмент, и с помощью комбинации клавиш Ctrl+D вызвать меню с настройками шрифта.
  2. В пункте «Интервал» выбрать один из вариантов (обычный, разреженный или уплотненный), при необходимости вписать цифровое значение.
  3. Образец покажет, как будет выглядеть текст при выбранном варианте. Нажать «Ок».

Здесь же есть опция «Кернинг» – тонкая настройка расстояния между буквами. Если поставить галочку в данном пункте, программа автоматически выберет и установит оптимальное расстояние между символами, учитывая особенности шрифта.

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

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