Удаление лишних символов из списка
Вы можете использовать этот инструмент для удаления нежелательных символов из текста. В специальной строке вы можете ввести все символы, которые хотите удалить. Символов может быть несколько, поэтому указывая их не стоит использовать разделители, например, запятую, так как это тоже символ. Вы просто можете писать их без пробела. Помимо символов есть функция удаления цифр, двойных пробелов, и разрыва строк,. После того как вы выберите то лишнее, что хотите очистить, вставьте скопированный текст специальное окно и нажмите на вкладку “Выполнить”. Ниже будет представлен результат форматирования текста.
- Перевод слов из строки в столбик
- Нумерация строк в списке
- Разделение списков
- Сортировка списка по алфавиту
Обрезка и удаление символов из строк в .NET
Если вы анализируете предложение на отдельные слова, вы можете получить слова с пустыми пробелами (также называемыми пробелами) на обоих концах слова. В этом случае можно использовать один из методов обрезки в System.String классе , чтобы удалить любое количество пробелов или других символов из указанной позиции в строке. В следующей таблице описаны доступные методы обрезки.
Имя метода | Использовать |
---|---|
String.Trim | Удаление пробелов или знаков, указанных в массиве знаков, из начала и конца строки. |
String.TrimEnd | Удаление символов, указанных в массиве символов, в конце строки. |
String.TrimStart | Удаление символов, указанных в массиве символов, в начале строки. |
String.Remove | Удаление указанного количества символов в указанной позиции индекса в строке. |
Trim
Вы можете легко удалить пробелы с обоих концов строки с помощью String.Trim метода , как показано в следующем примере:
String^ MyString = " Big "; Console::WriteLine("HelloWorld!", MyString); String^ TrimString = MyString->Trim(); Console::WriteLine("HelloWorld!", TrimString); // The example displays the following output: // Hello Big World! // HelloBigWorld!
string MyString = " Big "; Console.WriteLine("HelloWorld!", MyString); string TrimString = MyString.Trim(); Console.WriteLine("HelloWorld!", TrimString); // The example displays the following output: // Hello Big World! // HelloBigWorld!
Dim MyString As String = " Big " Console.WriteLine("HelloWorld!", MyString) Dim TrimString As String = MyString.Trim() Console.WriteLine("HelloWorld!", TrimString) ' The example displays the following output: ' Hello Big World! ' HelloBigWorld!
Кроме того, можно удалить символы, указанные в массиве знаков, из начала и конца строки. В следующем примере удаляются пробелы, точки и звездочки:
using System; public class Example < public static void Main() < String header = "* A Short String. *"; Console.WriteLine(header); Console.WriteLine(header.Trim( new Char[] < ' ', '*', '.' >)); > > // The example displays the following output: // * A Short String. * // A Short String
Module Example Public Sub Main() Dim header As String = "* A Short String. *" Console.WriteLine(header) Console.WriteLine(header.Trim()) End Sub End Module ' The example displays the following output: ' * A Short String. * ' A Short String
TrimEnd
Метод String.TrimEnd удаляет символы из конца строки, создавая новый строковый объект. Для указания символов, которые следует удалять, в этот метод передается массив символов. Порядок элементов в массиве символов не влияет на операцию обрезки. В случае обнаружения символа, который отсутствует в массиве, операция останавливается.
В следующем примере удаляются последние буквы строки с помощью TrimEnd метода . В этом примере положение символа ‘r’ и символа ‘W’ повернуты обратно, чтобы проиллюстрировать, что порядок символов в массиве не имеет значения. Обратите внимание, что этот код удаляет последнее слово MyString и часть первого.
String^ MyString = "Hello World!"; array^ MyChar = ; String^ NewString = MyString->TrimEnd(MyChar); Console::WriteLine(NewString);
string MyString = "Hello World!"; char[] MyChar = ; string NewString = MyString.TrimEnd(MyChar); Console.WriteLine(NewString);
Dim MyString As String = "Hello World!" Dim MyChar() As Char = Dim NewString As String = MyString.TrimEnd(MyChar) Console.WriteLine(NewString)
Этот код выводит на консоль значение He .
В следующем примере удаляется последнее слово строки с помощью TrimEnd метода . В этом коде запятая следует за словом Hello . Так как запятая не указана в массиве символов для обрезки, обрезка заканчивается запятой.
String^ MyString = "Hello, World!"; array^ MyChar = ; String^ NewString = MyString->TrimEnd(MyChar); Console::WriteLine(NewString);
string MyString = "Hello, World!"; char[] MyChar = ; string NewString = MyString.TrimEnd(MyChar); Console.WriteLine(NewString);
Dim MyString As String = "Hello, World!" Dim MyChar() As Char = Dim NewString As String = MyString.TrimEnd(MyChar) Console.WriteLine(NewString)
Этот код выводит на консоль значение Hello, .
TrimStart
Метод String.TrimStart аналогичен методу , String.TrimEnd за исключением того, что он создает новую строку путем удаления символов из начала существующего строкового объекта. Массив символов передается методу TrimStart для указания удаляемых символов. Как и в случае с методом TrimEnd , порядок элементов в массиве символов не влияет на операцию обрезки. В случае обнаружения символа, который отсутствует в массиве, операция останавливается.
В следующем примере удаляется первое слово в строке. В этом примере положение символа ‘l’ и символа ‘H’ повернуты обратно, чтобы проиллюстрировать, что порядок символов в массиве не имеет значения.
String^ MyString = "Hello World!"; array^ MyChar = ; String^ NewString = MyString->TrimStart(MyChar); Console::WriteLine(NewString);
string MyString = "Hello World!"; char[] MyChar = ; string NewString = MyString.TrimStart(MyChar); Console.WriteLine(NewString);
Dim MyString As String = "Hello World!" Dim MyChar() As Char = Dim NewString As String = MyString.TrimStart(MyChar) Console.WriteLine(NewString)
Этот код выводит на консоль значение World! .
Удалить
Метод String.Remove удаляет указанное количество знаков, начиная с указанного места в существующей строке. Этот метод подразумевает, что отсчет индекса начинается с нуля.
В следующем примере удаляется 10 символов из строки, начинающейся с пятой позиции отсчитываемого от нуля индекса строки.
String^ MyString = "Hello Beautiful World!"; Console::WriteLine(MyString->Remove(5,10)); // The example displays the following output: // Hello World!
string MyString = "Hello Beautiful World!"; Console.WriteLine(MyString.Remove(5,10)); // The example displays the following output: // Hello World!
Dim MyString As String = "Hello Beautiful World!" Console.WriteLine(MyString.Remove(5, 10)) ' The example displays the following output: ' Hello World!
Замените
Чтобы удалить из строки указанный символ или подстроку, можно вызвать метод String.Replace(String, String) и указать пустую строку (String.Empty) в качестве замены. В следующем примере удаляются все запятые из строки:
using System; public class Example < public static void Main() < String phrase = "a cold, dark night"; Console.WriteLine("Before: ", phrase); phrase = phrase.Replace(",", ""); Console.WriteLine("After: ", phrase); > > // The example displays the following output: // Before: a cold, dark night // After: a cold dark night
Module Example Public Sub Main() Dim phrase As String = "a cold, dark night" Console.WriteLine("Before: ", phrase) phrase = phrase.Replace(",", "") Console.WriteLine("After: ", phrase) End Sub End Module ' The example displays the following output: ' Before: a cold, dark night ' After: a cold dark night
См. также
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Как убрать лишние символы со строки?
Можно использовать регулярные выражения. Полученная строка будет содержать все символы старой, кроме «[» и «]» .
public static void main (String[] args) < String text = "[49,54545. 45,434324]"; Pattern p = Pattern.compile("[^\\[\\]]"); Matcher m = p.matcher(text); StringBuilder builder = new StringBuilder(); while(m.find()) < builder.append(text.substring(m.start(), m.end())); >String newText = builder.toString(); System.out.println(newText); >
Ещё можно взять срез строки без первого и последнего символов.
public static void main (String[] args)
Отслеживать
ответ дан 11 мар 2017 в 10:36
Кирилл Малышев Кирилл Малышев
10.8k 1 1 золотой знак 19 19 серебряных знаков 34 34 бронзовых знака
а какой из них лучше ?в плане скорости
11 мар 2017 в 10:44
Строки будет всегда такого вида? Если, например, строка придёт без скобок. Второй способ порежет числа, а первый обработает нормально. Второй способ не удалит скобки внутри строки, если они ам\\там будут. Если уверены, что нужно удалять всегда только первый и последний символы, используйте второй способ. stackoverflow.com/questions/15616066/…
11 мар 2017 в 10:48
Да Всеже за динамическое изменение отвечать я немогу ))) так что воспользуюсь 1 методом )Можете сказать что вы там сделали в 1 методе в какую сторону капать ?как задали именно [] знаки ,что за тему мне прочитать
11 мар 2017 в 11:14
Перед квадратными скобками поставлено \\, чтобы указать, что это не спец. символ, а обычный. А ^ означает, что искать надо все символы, кроме тех, что идут дальше. info.javarush.ru/translation/2015/02/19/…
Зачистка текста
Давайте рассмотрим способы избавления от такого «мусора».
Замена
«Старый, но не устаревший» трюк. Выделяем зачищаемый диапазон ячеек и используем инструмент Заменить с вкладки Главная – Найти и выделить (Home – Find & Select – Replace) или жмем сочетание клавиш Ctrl+H.
Изначально это окно было задумано для оптовой замены одного текста на другой по принципу «найди Маша – замени на Петя», но мы его, в данном случае, можем использовать его и для удаления лишнего текста. Например, в первую строку вводим «г.» (без кавычек!), а во вторую не вводим ничего и жмем кнопку Заменить все (Replace All). Excel удалит все символы «г.» перед названиями городов:
Только не забудьте предварительно выделить нужный диапазон ячеек, иначе замена произойдет на всем листе!
Удаление пробелов
Если из текста нужно удалить вообще все пробелы (например они стоят как тысячные разделители внутри больших чисел), то можно использовать ту же замену: нажать Ctrl+H, в первую строку ввести пробел, во вторую ничего не вводить и нажать кнопку Заменить все (Replace All).
Однако, часто возникает ситуация, когда удалить надо не все подряд пробелы, а только лишние – иначе все слова слипнутся друг с другом. В арсенале Excel есть специальная функция для этого – СЖПРОБЕЛЫ (TRIM) из категории Текстовые. Она удаляет из текста все пробелы, кроме одиночных пробелов между словами, т.е. мы получим на выходе как раз то, что нужно:
Удаление непечатаемых символов
В некоторых случаях, однако, функция СЖПРОБЕЛЫ (TRIM) может не помочь. Иногда то, что выглядит как пробел – на самом деле пробелом не является, а представляет собой невидимый спецсимвол (неразрывный пробел, перенос строки, табуляцию и т.д.). У таких символов внутренний символьный код отличается от кода пробела (32), поэтому функция СЖПРОБЕЛЫ не может их «зачистить».
Вариантов решения два:
- Аккуратно выделить мышью эти спецсимволы в тексте, скопировать их (Ctrl+C) и вставить (Ctrl+V) в первую строку в окне замены (Ctrl+H). Затем нажать кнопку Заменить все (Replace All) для удаления.
- Использовать функцию ПЕЧСИМВ (CLEAN) . Эта функция работает аналогично функции СЖПРОБЕЛЫ, но удаляет из текста не пробелы, а непечатаемые знаки. К сожалению, она тоже способна справится не со всеми спецсимволами, но большинство из них с ее помощью можно убрать.
Функция ПОДСТАВИТЬ
Замену одних символов на другие можно реализовать и с помощью формул. Для этого в категории Текстовые в Excel есть функция ПОДСТАВИТЬ (SUBSTITUTE) . У нее три обязательных аргумента:
- Текст в котором производим замену
- Старый текст – тот, который заменяем
- Новый текст – тот, на который заменяем
С ее помощью можно легко избавиться от ошибок (замена «а» на «о»), лишних пробелов (замена их на пустую строку «»), убрать из чисел лишние разделители (не забудьте умножить потом результат на 1, чтобы текст стал числом):
Удаление апострофов в начале ячеек
Апостроф (‘) в начале ячейки на листе Microsoft Excel – это специальный символ, официально называемый текстовым префиксом. Он нужен для того, чтобы дать понять Excel, что все последующее содержимое ячейки нужно воспринимать как текст, а не как число. По сути, он служит удобной альтернативой предварительной установке текстового формата для ячейки (Главная – Число – Текстовый) и для ввода длинных последовательностей цифр (номеров банковских счетов, кредитных карт, инвентарных номеров и т.д.) он просто незаменим. Но иногда он оказывается в ячейках против нашей воли (после выгрузок из корпоративных баз данных, например) и начинает мешать расчетам. Чтобы его удалить, придется использовать небольшой макрос. Откройте редактор Visual Basic сочетанием клавиш Alt+F11, вставьте новый модуль (меню Insert — Module) и введите туда его текст:
Sub Apostrophe_Remove() For Each cell In Selection If Not cell.HasFormula Then v = cell.Value cell.Clear cell.Formula = v End If Next End Sub
Теперь, если выделить на листе диапазон и запустить наш макрос (Alt+F8 или вкладка Разработчик – кнопка Макросы), то апострофы перед содержимым выделенных ячеек исчезнут.
Английские буквы вместо русских
Это уже, как правило, чисто человеческий фактор. При вводе текстовых данных в ячейку вместо русских букв случайно вводятся похожие английские («це» вместо русской «эс», «игрек» вместо русской «у» и т.д.) Причем снаружи все прилично, ибо начертание у этих символов иногда абсолютно одинаковое, но Excel воспринимает их, конечно же, как разные значения и выдает ошибки в формулах, дубликаты в фильтрах и т.д.
Можно, конечно, вручную заменять символы латинцы на соответствующую им кириллицу, но гораздо быстрее будет сделать это с помощью макроса. Откройте редактор Visual Basic сочетанием клавиш Alt+F11, вставьте новый модуль (меню Insert — Module) и введите туда его текст:
Sub Replace_Latin_to_Russian() Rus = "асекорхуАСЕНКМОРТХ" Eng = "acekopxyACEHKMOPTX" For Each cell In Selection For i = 1 To Len(cell) c1 = Mid(cell, i, 1) If c1 Like "[" & Eng & "]" Then c2 = Mid(Rus, InStr(1, Eng, c1), 1) cell.Value = Replace(cell, c1, c2) End If Next i Next cell End Sub
Теперь, если выделить на листе диапазон и запустить наш макрос (Alt+F8 или вкладка Разработчик – кнопка Макросы), то все английские буквы, найденные в выделенных ячейках, будут заменены на равноценные им русские. Только будьте осторожны, чтобы не заменить случайно нужную вам латиницу 🙂
Ссылки по теме
- Поиск символов латиницы в русском тексте
- Проверка текста на соответствие заданному шаблону (маске)
- Деление «слипшегося» текста из одного столбца на несколько