JavaScript LocaleCompare имена файлов, содержащие специальные символы - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь сравнить строки имени файла с localeCompare, но не могу настроить его, чтобы добиться желаемой сортировки.

Например, у меня есть список имен файлов

let names = ['pdf-test.pdf', 'pdf-test (1).pdf', 'pdf-test (2).pdf', 'pdf-test (9).pdf'] 

И я должен добавить 'pdf-test (8) .pdf' в этот список в правильном месте, то есть после 'pdf-test (2) .pdf'

Я использую следующее localeComapre:

names[i].localeCompare('pdf-test (8).pdf', 'en-US',  
{caseFirst: 'lower', ignorePunctuation: false, numeric: true})

но для первого случая:

'pdf-test.pdf'.localeCompare('pdf-test (8).pdf', 'en-US',  
{caseFirst: 'lower', ignorePunctuation: false, numeric: true})

Я получаю результат 1, что неправильно в моем случае

Когда я запускаю тот же скрипт, но без расширения файла, я получаю -1

'pdf-test'.localeCompare('pdf-test (8)', 'en-US',  
{caseFirst: 'lower', ignorePunctuation: false, numeric: true})

Есть ли элегантный способ решить эту проблему. Похоже, «.extension», что запутывает сравнение?

...