Итак, у меня есть приложение для отработки концепции конъюгации, которое я создаю, с Vue.js.Одним из ключевых элементов является то, что когда вы вводите ответ на спряжение, он сравнивает введенный текст с String.startswith()
.Это здорово, пока в строке нет символов Юникода.Кажется, что почти всегда вводимые вами символы Юникода отличаются от символов в базе данных.На самом деле вы можете наглядно увидеть в этом примере CLI узла, что версия, которую я печатаю в символе «ț», буквально отличается от той, что указана в базе данных «ţ».
Вот вывод типизированного ввода, это значение и значение в юникоде и сравнение:
input: anunț // anun\u21B
comparison: anunţ // anun\u163
Я пробовал что-то вроде .normalize()
, но это не влияет ни на введенную строку, ни на строку сравнения.
> var input = 'anunț'
> var comparison = 'anunţ'
> input === comparison
false
> input.normalize() === comparison
false
> input.normalize() === comparison.normalize()
false
> input === comparison.normalize()
false
/// etc etc with NFC, NFD, NFKC, NFKD forms
> input.normalize()
'anunț'
> comparison.normalize()
'anunţ'
// i've also tried .normalize() with the string decoded into unicode
Я пытался преобразовать в Unicode и вручную , заменяя один набор строк, но это зашло так далеко - и поднимает свои собственные проблемы - в том числе иногдакогда вы наберете ответ, у него начнутся проблемы с положительным сравнением, пока не будет введена вся строка.
Наконец я начал пробовать сравнения с помощью регулярных выражений, но я думаю, что это также может быть другим отвлечением кроличьей норы.
Разобравшись с его основной логикой без каких-либо вышеупомянутых попыток, это суть того, что я пытаюсь сделать для контекста:
if (this.conjugation.startsWith(this.input)) {
this.status = "correct";
} else {
this.status = "incorrect";
}
if (conjugation === val) {
// okay, we are done
}
Любые мысли о том, как я могу обойти это?В настоящее время я тестирую это с румынскими глаголами, поэтому символы, по-видимому, находятся в следующих диапазонах Юникода:
\u0000-\u007F
, \u0180-\u024F
, \u0100-\u017F