1

У меня есть много ключей ответа, которые выглядят так:

1.A;8.C;15.E;22.B
2.B;9.D;16.A;23.C
3.C;10.E;17.B;24.D
4.D;11.A;18.C;25.E
5.E;12.B;19.D;26.A
6.A;13.C;20.E;27.B
7.B;14.D;21.A;28.C

Я пытаюсь найти самый простой способ автоматически переупорядочить их во что-то вроде этого:

1.A
2.B
3.C
4.D
5.E
6.A
7.B
8.C
9.D
10.E
11.A
12.B
13.C
14.D
15.E
16.A
17.B
18.C
19.D
20.E
21.A
22.B
23.C
24.D
25.E
26.A
27.B
28.C

У меня нет доступа к любым языкам программирования. Я пытался использовать Find-Replace в Notepad, Wordpad, Microsoft Word и Notepad++, и пытался придумать, что можно сделать с AutoHotKey. Но я не могу придумать ничего, что могло бы сработать.

Любая помощь будет оценена. Спасибо!

3 ответа3

1

В Word 2010

  1. Нажмите Ctrl-H, чтобы заменить все ";" с "^ p"
  2. Нажмите Ctrl-A, чтобы выбрать все
  3. Нажмите на иконку для сортировки на вкладке Главная (я не знаю горячей клавиши для этого). В диалоговом окне "Сортировка текста" нажмите кнопку «Параметр ...». В поле "Отдельные поля" выберите "Другое" и введите «.» Затем нажмите Ok, чтобы вернуться. В поле Сортировка по выберите Поле 1. Тип: выберите номер. Нажмите OK, чтобы выполнить сортировку.

При желании запишите это как макрос и назначьте его с помощью горячей клавиши.

0

У меня нет доступа к любым языкам программирования.

Это не правда! У вас есть Windows Scripting Host, который позволяет вам писать код на VBScript, JavaScript и VBA, а также PowerShell, который является мощным языком сценариев с возможностью подключения к .Net.

Вот решение PowerShell. Сохраните его как SortAnswers.ps1 и запустите в сеансе PowerShell.

Param
(
    [Parameter(Mandatory = $true)]
    [string]$InPath, # Input file

    [string]$OutPath # Output file, optional
)

# Natural sort implementation:
# https://stackoverflow.com/questions/5427506/how-to-sort-by-file-name-the-same-way-windows-explorer-does
$ToNatural = {[regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20) })}

$Sorted = Get-Content -Path $_ | # Read input file, line by line
    ForEach-Object {$_ -split ';'} | # Split every line by ';'
        Sort-Object $ToNatural # Sort resulting items and assign them to $Sorted variable

# If OutPath parameter specified
if($OutPath)
{
    # Save to file
    $Sorted | Set-Content -Path $OutPath
}
else
{
    # Display on screen
    $Sorted
}

Примеры

  • Читайте Answers.txt в текущей директории, сохранить отсортированные ответы на Answers_sorted.txt

     .\SortAnswers.ps1 -InPath .\Answers.txt -OutPath .\Answers_sorted.txt
    
     or
    
     .\SortAnswers.ps1 .\Answers.txt .\Answers_sorted.txt
    
  • Прочитайте Answers.txt в текущем каталоге, покажите отсортированные ответы на экране:

     .\SortAnswers.ps1 -InPath .\Answers.txt
    
     or
    
    .\SortAnswers.ps1 .\Answers.txt
    

Заметка

Сначала вы должны разрешить выполнение сценариев PowerShell :

Политика выполнения PowerShell по умолчанию называется Restricted. В этом режиме PowerShell работает только как интерактивная оболочка. Он не запускает сценарии и загружает только файлы конфигурации, подписанные издателем, которому вы доверяете. Если вы получаете неприятную красную ошибку, наиболее вероятной причиной является попытка запустить неподписанный скрипт.

Чтобы изменить его на неограниченный, выполните следующую команду из административной оболочки PowerShell:

Set-ExecutionPolicy Unrestricted

Рекомендации

0
  • У меня пока недостаточно комментариев, поэтому, пожалуйста, люди, не ненавидите и не голосуйте. Я пытаюсь вернуть сообществу.

Самый простой способ:
Я отметил, что у вас есть MS Word, поэтому было бы не сложно предположить, что у вас также есть MS Excel.


Скопируйте текст и вставьте его как есть в блокнот и сохраните на рабочем столе, например, в формате .txt.

Затем запустите MS Excel.
На этом пустом листе перейдите в меню; Данные -> Импорт внешних данных -> Импорт данных (перейдите на рабочий стол и выберите a.txt).
Затем нажмите "открыть".

Мастер импорта текста теперь открыт.
Выберите радио выбор «с разделителями », нажмите «Далее».
Выберите разделитель « Точка с запятой ».
Нажмите Готово. Затем нажмите OK.

Теперь у вас есть несколько столбцов данных, но они расположены в порядке сверху вниз по желанию. В вашем примере у вас будет 4 столбца. Столбец A будет 1-7, B 8-14 и т.д. Теперь вы можете скопировать каждый соседний столбец и вставить его в столбец A, чтобы сложить данные. Занимает всего минуту, чтобы сделать.


Надеюсь это поможет!

  • Я думаю, что это самый простой подход, поскольку вы упоминаете, что «у вас нет доступа к языкам программирования», то есть, я понимаю, что вы не программист. Как программист, вы можете легко скачать любой из множества компиляторов и запрограммировать алгоритм сортировки на нескольких языках. Но это будет писать программу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .