Можно ли отсортировать текст по определенному символу?

7

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

241&name=A
123&name=C
645&name=B

Поэтому я хотел бы отсортировать список в алфавитном порядке по «A, B, C» и т. Д. Могу ли я сделать это в Notepad ++ или Excel?

Syztemlord
источник
Спасибо за быстрые ответы, удалось разобрать его через Notepad ++
Syztemlord

Ответы:

13

Notepad ++ Solution

  1. "Меню"> "TextFX"> "Инструменты TextFX" и выберите один из следующих вариантов:

    • Снимите флажок для опции «+ Сортировка по возрастанию», чтобы отсортировать по убыванию.

    • Установите флажок для опции «+ Сортировать по возрастанию», чтобы отсортировать по возрастанию.

    введите описание изображения здесь

  2. Выберите текст, строки текста или столбцы

    • Для выбора режима столбца - нажмите и удерживайте Shift+ Alt, выделите текст мышью

    введите описание изображения здесь

  3. "Меню"> "TextFX"> "Инструменты TextFX" и выберите один из следующих вариантов:

    • «Сортировать строки с учетом регистра (в столбце)»

    • «Сортировка строк без учета регистра (в столбце)»

    введите описание изображения здесь

  4. Результат (до и после):

    введите описание изображения здесь введите описание изображения здесь

Заметки:

  • Инструменты TextFX будут сортировать только выбранные вами строки. Если вы выберете режим столбца (удерживайте клавиши Shift + Alt и выделите текст с помощью мыши), он отсортирует все строки, которые хотя бы частично выбраны, но отсортирует их по выбранной части.

  • Опцию «+ Sort output only UNIQUE (at column) lines» можно проверить независимо от опции «+ Sort ascending» (это означает, что она будет работать в восходящем или нисходящем режиме). При включении дублирующиеся записи будут удалены при сортировке, оставляя только уникальные записи.

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

Исходная сортировка строк с помощью плагина TextFX


Что если у меня нет плагина TextFX?

Менеджер плагинов установить:

Самый простой способ установить плагин - использовать диспетчер плагинов.

  1. "Меню"> "Плагины"> "Диспетчер плагинов"> "Показать диспетчер плагинов"

  2. Выберите «Доступно»

  3. Выберите «Символы TextFX»

  4. Нажмите «Установить»

Ручная установка:

  1. Закрыть Блокнот ++

  2. Загрузите ZIP-файл с http://sourceforge.net/projects/npp-plugins/files/TextFX/TextFX%20v0.26/

  3. Извлеките в pluginsкаталог Notepad ++ .

  4. Запустите Блокнот ++

ДэвидПостилл
источник
1
Для этого решения требуется дополнительный плагин, которого нет в моей установке NotePad ++ по умолчанию. Я нахожусь за корпоративным брандмауэром и не могу его установить ...: /
Denham Coote
Именно по этой причине я использую портативную версию Notepad ++ на USB-накопителе;)
DavidPostill
Теперь, если только нам было разрешено подключать USB-накопители! (Политика банка, они выключены. Но мы можем использовать Excel!) :-(
Денхам Кут
Согласно Википедии (если вы можете в это поверить), «первым плагином, который был включен в программу, был« TextFX », который включает в себя такие функции, как проверка W3C для HTML и CSS, сортировка текста, изменение регистра символов и обработка кавычек».
DavidPostill
@DenhamCoote Если есть способ загрузки файлов в вашу систему (USB, электронная почта, командная строка, ...), вы сможете добавить плагин, загрузив необходимый файл и поместив его в нужную папку. Используя портативную версию Notepad ++, вам даже не нужно ничего устанавливать
BlueCacti
12

Решение Excel

Это решение будет работать для любой длины текста после =

  1. Вставьте ваши данные в Excel.
  2. Используйте формулу, =MID(A1,FIND("=",A1)+1,LEN(A1)-FIND("=",A1))чтобы захватить все после=
  3. Сортировать по новому столбцу

введите описание изображения здесь

Денхем Кут
источник
Это решение требует дополнительного столбца данных: /
DavidPostill
2
Как и другое решение Excel. Но это работает для более длинных данных. ОП просил решения либо в ...
Денхам Кут
2
@DavidPostill Любой, кто серьезно работал с базами данных плоских файлов в течение любого периода времени в производстве и не имеет контроля над базами данных или определения приоритетов для получения ресурсов разработки для внесения изменений, должен был пойти на компромисс, добавив ключевые столбцы и столбцы конкатенации в Excel с целью эффективной сортировки и нарезки данных. Решение Denham Coote решает проблему, поставленную OP. Это быстро, может быть реализовано конечным пользователем, с небольшими накладными расходами, если база данных на самом деле больше, чем ключ, опубликованный OP. Не нужно быть негативным по этому поводу.
AMR
@AMR Я не был отрицательным (я не отрицал, фактически я проголосовал за оба ответа, которые не были моими), это было просто наблюдение. Лучшие решения любой проблемы не добавляют к данным. Например, решение Notepad ++. Я ценю, что решение Excel требует дополнительных данных ...
DavidPostill
1
Решение DavidPostill NotePad ++ (за которое я проголосовал, кстати) тоже не нуждается в большом раздутом программном обеспечении ;-)
Denham Coote
4

С данными в столбце A , в B1 введите:

=RIGHT(A1,1)

и скопировать вниз. Затем сортируйте столбцы A и B по B :

До:

введите описание изображения здесь

и после:

введите описание изображения здесь

Ученик Гэри
источник
Это решение требует дополнительного столбца данных: /
DavidPostill
@DavidPostill Очевидно, вы правы!
Студент Гари
В отличие от моего решения Notepad ++;)
DavidPostill
@DavidPostill Мне нравится ваше решение ..... Я рад, что вы опубликовали его ... Блокнот ++ выглядит действительно аккуратно! Это бесплатно??
Студент Гари
@ Gary'sStudent Хотя Notepad ++ упоминался в другом ответе, я все же отвечу вам: вы можете бесплатно загрузить Notepad ++ по адресу notepad-plus-plus.org. Если вы попытались выполнить простой поиск в Google, вы бы получил эту информацию сразу, вместо того, чтобы ждать 39 минут ...
BlueCacti
2

Существует другое решение с Notepad ++, которое не требует дополнительного плагина. Я использовал этот вход и предположил, что на входе нет #. Вы можете просто использовать другой символ для отделения вашего элемента сортировки от исходного ввода.

123&name=Alpha&somethingelse
456&name=Gamma&differentstuff
789&name=Beta&otherstuff
  1. Используйте поиск и замену по регулярному выражению, чтобы скопировать часть, которую вы хотите отсортировать, в начало строки. Не забудьте включить регулярные выражения и использовать

    Search: (.*)&name=(.*?)&(.*)

    Replace: \2#\1&name=\2&\3

Результат:

Alpha#123&name=Alpha&somethingelse
Gamma#456&name=Gamma&differentstuff
Beta#789&name=Beta&otherstuff
  1. Используйте функцию сортировки линий.

Результат:

Alpha#123&name=Alpha&somethingelse
Beta#789&name=Beta&otherstuff
Gamma#456&name=Gamma&differentstuff
  1. Используйте другое регулярное выражение, чтобы отменить изменения с шага 1.

    Search: (.*)#(.*)

    Replace: \2

Результат:

123&name=Alpha&somethingelse
789&name=Beta&otherstuff
456&name=Gamma&differentstuff
Sumyrda
источник