Сортировка строк после определенного символа в блокноте ++ - PullRequest
2 голосов
/ 10 марта 2020

У меня есть строки, которые я хочу отсортировать от наибольшего числа к наименьшему или противоположному, так что на самом деле это не проблема

Пример этого:

steven:class3 | Pounds: 6
ibesom:class1 | Pounds: 125
heller:class1 | Pounds: 13

до этого:

ibesom:class1 | Pounds: 125
heller:class1 | Pounds: 13
steven:class3 | Pounds: 6

Спасибо, ребята

1 Ответ

1 голос
/ 10 марта 2020

Для простых задач сортировки вы можете просто переставить содержимое строки, отсортировать, а затем вернуть строки в исходную форму. Это часто можно сделать с помощью простых регулярных выражений. См. этот вопрос для примера.

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

Для этого вопроса будет достаточно простой перестановки, затем сортировки и перегруппировки обратно. Но использование более общего стиля поучительно.

Во-первых, выберите разделитель. Используйте символ или строку, которые не встречаются в тексте для сортировки. Для этого я выбираю ;'#.

Затем создайте регулярное выражение find и replace для извлечения поисковых терминов и построения строки для сортировки. Для этого find-what является ^(.*)\b(\d+)$, а replace-with - $2 ;'#$0.

Это изменяет пример ввода на:

6 ;'#steven:class3 | Pounds: 6
125 ;'#ibesom:class1 | Pounds: 125
13 ;'#heller:class1 | Pounds: 13

Теперь используйте menu => Edit => Операции со строками => Сортировать по возрастанию целых чисел. Это дает:

6 ;'#steven:class3 | Pounds: 6
13 ;'#heller:class1 | Pounds: 13
125 ;'#ibesom:class1 | Pounds: 125

Используемый метод не ограничен целыми числами. Термин сортировки может быть создан с использованием любых символов и соответствующей сортировки.

Последний шаг - удалить термин сортировки и разделитель. Используйте регулярное выражение для замены всех находок ^.*;'# и ничего не заменяйте.

Единственная задача - создать первое регулярное выражение, чтобы сгенерировать термин сортировки и добавить его в строку. Общий план состоит в том, что find-what соответствует всей строке ввода, поэтому она начинается с ^ и заканчивается $. Тогда в замене есть три элемента: «термин сортировки», «разделитель» и $0. Финальная строка $0 включает всю исходную строку ввода.

...