Visual studio убрать пробелы в строке
Поскольку у меня ранее был этот код структурирован по-другому, я не заметил этого:
Мне известно, что эти методы работают по-разному, поскольку Trim() удаляет все пробельные символы, тогда как Replace(" ", string.Empty) удаляет только пробельные символы.
Вот почему у меня другой вопрос.
Я не вижу очевидного способа добиться этого с помощью Replace. Мой вопрос: как мне поступить, если я хочу удалить все пробельные символы из строки?
Я нашел следующее:
Но так как я никогда не использовал регулярные выражения, я сомневаюсь, как применить его к строке?
Попробуйте использовать Linq , чтобы отфильтровать пробелы:
Ответ на этот вопрос не так прост, как кажется. Проблема не в том, чтобы на самом деле кодировать замену, а в том, чтобы определить, что такое пробел.
Например, в этой статье Википедии перечислены десятки символов (кодовые точки Unicode), которые имеют Атрибут Unicode WSpace , а также множество связанных символов, которые большинство людей считают пустым пространством, но которые не имеют атрибута WSpace .
Это может или не может быть проблемой для вашего приложения; это зависит от того, как строки, которые вы должны обработать, фильтруются в первую очередь. Но если вы собираетесь обрабатывать строки на иностранных языках (другими словами: строки, содержащие символы вне диапазона ASCII), вам придется подумать об этом.
Для тех, кто заходит на эту страницу, есть отличная статья CodeProject, в которой автор сравнивает несколько разных решений этой проблемы. Самым быстрым полностью управляемым решением, которое он придумал, является (по сути) следующее:
Есть, конечно, много предостережений и, возможно, разногласий по поводу правильного набора пробельных символов, но основная информация довольно полезна (например, RegEx был самым медленным на сегодняшний день).
Примечание: я не имею никакого отношения к автору или CodeProject. Я только что нашел эту статью с помощью обычного веб-поиска.
Одним из способов является использование Regex
Просто передайте строку при вызове метода, она вернет строку без пробелов.
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает новую строку, в которой удалены все начальные и конечные вхождения заданного набора символов из текущей строки.
Перегрузки
Удаляет все начальные и конечные вхождения набора символов, заданного в виде массива, из текущей строки.
Удаляет все начальные и конечные экземпляры символа из текущей строки.
Удаляет все начальные и конечные символы пробела из текущей строки.
Trim(Char[])
Удаляет все начальные и конечные вхождения набора символов, заданного в виде массива, из текущей строки.
Параметры
Массив удаляемых знаков Юникода или null .
Возвращаемое значение
Строка, оставшаяся после удаления всех вхождений символов, заданных в параметре trimChars , из начала и конца текущей строки. Если значением параметра trimChars является null или пустой массив, удаляются символы-разделители. Если в текущем экземпляре невозможно усечь символы, метод возвращает текущий экземпляр без изменений.
Примеры
Комментарии
Метод Trim(System.Char[]) удаляет из текущей строки все начальные и конечные символы, находящиеся в параметре trimChars . Каждая начальная и конечная операция обрезки останавливается, если не обнаружен символ trimChars . Например, если текущая строка имеет значение "123abc456xyz789" и trimChars содержит цифры от "1" до "9", Trim(System.Char[]) метод возвращает "abc456xyz".
Если текущая строка равна Empty или все символы в текущем экземпляре состоят из символов в массиве trimChars , метод возвращается Empty.
Если trimChars массив или null пустой, этот метод удаляет все начальные или конечные символы, которые приводят к возврату true метода при передаче в Char.IsWhiteSpace метод.
Примечания для тех, кто вызывает этот метод
При разборе предложения на отдельные слова может оказаться, что в начале или в конце некоторых слов стоят пробелы. В этом случае можно воспользоваться методами сокращения в классе System.String, чтобы удалить любое количество пробелов или других символов из указанной позиции в строке. В таблице ниже описаны доступны методы сокращения.
Имя метода | Использовать |
---|---|
String.Trim | Удаление пробелов или знаков, указанных в массиве знаков, из начала и конца строки. |
String.TrimEnd | Удаление символов, указанных в массиве символов, в конце строки. |
String.TrimStart | Удаление символов, указанных в массиве символов, в начале строки. |
String.Remove | Удаление указанного количества символов в указанной позиции индекса в строке. |
Простой способ удалить пробелы с обоих концов строки — метод String.Trim, использование которого показано в следующем примере.
Кроме того, можно удалить символы, указанные в массиве знаков, из начала и конца строки. В следующем примере удаляются символы пробелов, точки и звездочки.
TrimEnd
Метод String.TrimEnd удаляет символы в конце строки, создавая новый строковый объект. Для указания символов, которые следует удалять, в этот метод передается массив символов. Порядок элементов в массиве символов не влияет на выполнение операции сокращения. В случае обнаружения символа, который отсутствует в массиве, операция останавливается.
Ниже приведен пример удаления последних букв строки с помощью метода TrimEnd. В этом примере положение символов 'r' и 'W' изменено для иллюстрации того, что порядок символов в массиве не имеет значения. Обратите внимание, что этот код удаляет последнее слово MyString и часть первого.
Этот код выводит на консоль значение He .
Ниже приведен пример удаления последнего слова строки с помощью метода TrimEnd. В этом коде после слова Hello следует запятая, а поскольку запятая не указана в массиве символов для сокращения, то выполнение операции прекращается на запятой.
Этот код выводит на консоль значение Hello, .
TrimStart
Метод String.TrimStart аналогичен методу String.TrimEnd за исключением того, что он создает новую строку путем удаления знаков в начале существующего строкового объекта. Для указания символов, которые следует удалять, в метод TrimStart передается массив символов. Как и в случае с методом TrimEnd, порядок элементов в массиве символов не влияет на выполнение операции сокращения. В случае обнаружения символа, который отсутствует в массиве, операция останавливается.
В следующем примере удаляется первое слово в строке. В этом примере положение символов 'l' и 'H' изменено для иллюстрации того, что порядок символов в массиве не имеет значения.
Этот код выводит на консоль значение World! .
Удалить
Метод String.Remove удаляет указанное количество знаков, начиная с указанного места в существующей строке. Этот метод подразумевает, что отсчет индекса начинается с нуля.
В следующем примере из строки удаляется десять символов, начиная с пятой позиции отсчитываемого от нуля индекса строки.
Замените
Чтобы удалить из строки указанный символ или подстроку, можно вызвать метод String.Replace(String, String) и указать пустую строку (String.Empty) в качестве замены. В следующем примере удаляются все запятые из строки.
Привет, Хабр! Культурные воины продолжаются, люди сражаются по разные стороны баррикад, пытаясь решить: tabs or spaces. На эту же тему мы нашли интересную статью Скотта Хансельмана, в которой он рассказывает про инструмент, решающий это спор, EditorConfig в Visual Studio. Всех интересующихся прошу под кат.
Помните, летом на StackOverflow была статья о том, что на пробелах люди зарабатывают больше.
Разберемся в этом вместе с Джиной Трапани (Gina Trapani). Найдем рабочий код.
Разработчики могут ломать копья и дальше, но проблема форматирования кода решается с помощью файла EditorConfig. Удивительно, но многие люди пользуются им, сами того не зная, так что эта публикация будет просто маленькой подсказкой. Расскажите об этом коллегам.
В моем примере указано только расширение *.cs, но вы также можете указать [*.] или, если хотите, только [*], либо сразу множество разделов.
Убедитесь, что файл введен в систему вместе с проектом, чтобы каждый член команды смог оценить все его преимущества.
Вы можете увидеть в Notepad2, если кто-то, как в каменном веке, использует пробелы в качестве разделителя. Пробелы в этом редакторе отображаются как бледные точки.
Я открываю этот проект в Visual Studio 2017 со встроенной поддержкой EditorConfig. Обратите внимание на отображаемое внизу предупреждение Visual Studio о том, что в проекте имеются обозначения, не совпадающие с нашими.
Команды Visual Studio для форматирования документов в этом проекте будут использовать знаки табуляции, а не пробелы. Вот тот же документ, переформатированный в Visual Studio:
Теперь я могу спать спокойно: пробелы побеждены, трезвые умы восторжествовали (по крайней мере, в рамках этого проекта).
Более того, если позволяет используемый редактор, можно добавить расширения EditorConfig для определенных файлов или языков. Это позволит обеспечить единообразие при работе ваших сотрудников над проектом. Если вы знакомы с FxCop и StyleCop, то это примерно то же самое.
Для примера сделаем так, чтобы мои сотрудники использовали предопределенные типы для локальных объектов:
В Visual Studio в соответствующей строке появится значок лампочки с предлагаемым исправлением, ведь, скорее всего, мои сотрудники вместо полной формы «System.String» напечатают просто «string».
- csharp_new_line_before_open_brace — оставлять открытые скобки в конце строки или помещать их на отдельной строке?
- csharp_new_line_before_members_in_object_initializer s — допускается ли размещение элементов A = 3, B = 4 на одной строке или каждый из них располагается на отдельной строке?
- csharp_indent_case_contents — будут ли все команды switch/case отображаться одинаково в начале строки или все же перед командами case будет стоять отступ, как и было задумано создателем?
- Мы можем даже всячески настраивать регистр Case: pascal_case, camel_case, first_word_upper, all_upper, all_lower
Кстати, летом мы проводили голосование на эту тему в Microsoft Developer. Тогда победил Tabs. Предлагаем повторить здесь.
Перевод статьи «20 VS Code Shortcuts For Fast Coding — Cheatsheet».
Не каждый будет изучать все приемы работы в VS Code: их попросту слишком много! В этой статье я перечислил свои любимые сочетания клавиш, позволяющие мне работать быстрее. Надеюсь, они пригодятся и другим людям.
Объединить строку
- Mac — Ctrl+j
- Ubuntu, Windows: откройте существующие сочетания клавиш File -> Preferences -> Keyboard shortcuts и назначьте удобное сочетание для editor.action.join.
Форматирование кода
Это сочетание помогает выровнять код в соответствии с заранее прописанными настройками редактора.
- Windows — Shift + Alt + F
- Mac — Shift + Option + F
- Ubuntu — Ctrl + Shift + I
Обрезка множественных пробелов
Данное сочетание клавиш помогает избавиться от лишних пробелов в начале или конце строки.
Совет: применяйте в самом конце, когда завершаете работу над кодом в текущем файле.
Есть и альтернативный подход. Можно включить обрезку пробелов в самих настройках:
- Откройте пользовательские настройки (Preferences > Settings > вкладка User Settings).
- Кликните значок <> в верхней правой части окна. Это откроет документ.
- Добавьте новое правило «files.trimTrailingWhitespace«: true в документ User Settings (если его там еще нет). Таким образом вы не редактируете дефолтные настройки напрямую, а добавляете к ним новое правило.
- Сохраните файл User Settings.
Также мы добавили новую команду для запуска вручную (Trim Trailing Whitespace в палитре команд).
Если вы используете более новую версию VS Code, после открытия пользовательских настроек вы увидите следующее окно (поставьте галочку, как показано):
Сворачивание блоков кода
Иногда, если размер файла велик или если вы просто хотите понять код в целом, без подробностей, вам пригодится функция сворачивания блоков кода.
Свернуть внутреннюю область возле курсора вам помогут следующие сочетания клавиш:
- Windows /Ubuntu — Ctrl + Shift + [
- Mac — Command+ Option + [
Чтобы развернуть, применяйте те же сочетания, но с закрывающей квадратной скобкой:
- Windows /Ubuntu — Ctrl + Shift + ]
- Mac — Command+ Option + ]
Скопировать строку сверху или снизу
- Windows — Shift + Alt + стрелка вверх / вниз
- Mac — Shift + Option + стрелка вверх / вниз
- Ubuntu — Ctrl + Shift + Alt + стрелка вверх / вниз
Назначенные сочетания можно посмотреть и отредактировать, пройдя по пути File > Preferences > Keyboard Shortcuts.
Разбить окно редактора по вертикали
- Windows — Shift + Alt + \ или 2,3,4
- Mac — Command + \ или 2,3,4
- Ubuntu — Shift + Alt + \ или 2,3,4
Чтобы разбить окно редактора, можно воспользоваться командой split editor. Оригинальное сочетание клавиш для разделения окна — 123. Функция разделения полезна для параллельного редактирования файлов.
Назначенные сочетания также можно отредактировать, выбрав новые по своему вкусу (File > Preferences > Keyboard Shortcuts).
Окно редактора в виде сетки
По умолчанию группы редактора располагаются в вертикальных столбцах (например, когда вы разбиваете окно, чтобы открыть параллельно два файла). Но вы можете с легкостью расположить группы так, как вам больше нравится (хоть вертикально, хоть горизонтально).
Для поддержки гибких макетов можно создать пустые группы редактора. По умолчанию закрытие последнего редактора группы закрывает и саму группу, но это поведение можно изменить, добавив в настройках workbench.editor.closeEmptyGroups: false.
В меню View > Editor Layout можно посмотреть набор готовых вариантов разделения окна.
Выделить слово
- Windows, Ubuntu — Ctrl+ d
- Mac — Command + d
Если нажать command + d больше одного раза, к выделению добавится еще одно вхождение того же слова далее по тексту.
Открыть или закрыть боковую панель
- Windows, Ubuntu — Ctrl+ b
- Mac — Command + b
Иногда очень пригождается возможность закрыть боковую панель, например, если у файла слишком большая ширина или если хотите разбить окно и открыть одновременно два файла.
Переход к указанной строке
Примечание: чтобы перейти к нужной строке в файле, используйте сочетание клавиш ctrl + g, после которого введите номер строки. Или же сначала откройте меню файла при помощи command + p, затем введите двоеточие и номер нужной строки.
- Windows, Ubuntu — Ctrl + g
- Mac — Ctrl + g или Ctrl + p
Переход к символу в файле
- Windows, Ubuntu — Ctrl + Shift + o
- Mac — Command + Shift+ o
Символы можно группировать, добавив двоеточие:
Переход к символу в рабочем окружении
- Windows, Ubuntu — Ctrl + t
- Mac — Command + t
Удаление предыдущего слова
- Windows, Ubuntu — Ctrl + backspace
- Mac — Command + delete
Полезно в ситуациях, если набрали лишнее, а жать несколько раз backspace не любите.
Выделение целых слов
- Windows, Ubuntu — Ctrl + Shift + стрелка вправо / влево
- Mac — Command + Shift + стрелка вправо / влево
Очень полезно для более быстрого выделения и редактирования.
Дублирование строки
- Windows, Ubuntu — Ctrl + Shift + d
- Mac — Command + Shift +d
Дублирование строк это очень полезный и хорошо известный функционал.
Удаление строки
- Windows, Ubuntu — Ctrl + x
- Mac — Command + x
Добавление курсора сверху / снизу
- Windows, Ubuntu — Ctrl + Alt + стрелка вверх / вниз
- Mac — Command + Alt + стрелка вверх / вниз
Функция дублирования курсоров в VS Code, пожалуй, сэкономит вам больше всего времени.
Переименование символа
Выделите нужный символ, а затем нажмите f2. Также можно использовать контекстное меню.
Выделение столбца
- Windows, Ubuntu — Shift + Alt
- Mac — Shift + Option
При помощи этих сочетаний клавиш и движения мыши можно выделять блоки текста. В конце каждой выделенной строки будет добавлен курсор.
Палитра команд
- Windows, Ubuntu — Ctrl + p
- Mac — Command + p
При помощи этих сочетаний клавиш можно получить доступ ко всем доступным в вашем контексте командам. Вот самые используемые из них:
1. Открыть файл
Чтобы перейти к определенному файлу, введите сочетание клавиш для открытия палитры команд, а затем начните вводить название искомого файла. Это позволит быстро найти нужный файл.
2. Посмотреть сочетание клавиш для команды
Все команды в палитре команд приводятся с назначенными им сочетаниями клавиш (если такие назначения есть). Поэтому, забыв нужное сочетание, можно подсмотреть его в палитре.
Полезных сочетаний клавиш в VS Code очень много. При желании можно ознакомиться с ними подробнее:
Читайте также: