Используйте String.prototype.localeCompare
на Ваш пример:
list.sort(function (a, b) {
return ('' + a.attr).localeCompare(b.attr);
})
Мы вынуждаем a.attr быть строкой для предотвращения исключений. localeCompare
поддерживался начиная с Internet Explorer 6 и Firefox 1. Можно также видеть, что следующий код использовал, который не уважает локаль:
if (item1.attr < item2.attr)
return -1;
if ( item1.attr > item2.attr)
return 1;
return 0;
Я лично не использовал парсеры Javascript BBcode, но два первых результата Google ( bbcodejs и это сообщение в блоге ) кажутся довольно слабыми. Первый, кажется, поддерживает только простой поиск и замену, а второй, похоже, имеет заранее установленный встроенный BBcode, так что вам, вероятно, придется немного взломать его, если вы выберете это решение.
Лучшие варианты: возможно, чтобы развернуть свое собственное решение (возможно, основывая свою работу на одной из двух ссылок здесь) или просто используйте AJAX и двигайтесь дальше. Вероятно, это лучший способ убедиться, что предварительный просмотр точен, и в любом случае предварительный просмотр не обязательно должен выполняться в реальном времени при каждом нажатии клавиши; задержка даже перед отправкой запроса приемлема.
Если это не удалось, fgetc ()
возвращает EOF.
int c;
while ((c = getc(fr)) != EOF)
{
printf("%c", c);
}
-121--4213605- Измените
char c;
while((c = getc(fr)) != NULL)
{
printf("%c", c);
}
на
char c;
int charAsInt;
while((charAsInt = getc(fr)) != EOF)
{
c = (char) charAsInt;
printf("%c", c);
}
Другими словами: необходимо сравнить с EOF
, а не с NULL
. Также необходимо использовать переменную int
для получения возвращаемого значения из fgetc
. Если вы используете символ
, сравнение с EOF
может завершиться неудачей, и вы вернетесь туда, где начали.
Это немного поздно, и на вопрос, безусловно, был дан ответ. Тем не менее, если вы все еще открыты для предложений и еще не потратили свое время на преобразование указанного синтаксического анализатора с C # в JavaScript, я написал синтаксический анализатор (первоначально в PHP), который я преобразовал сам [2] в JavaScript. Он доступен по адресу bitbucket в соответствии с 3-ой лицензией BSD. Синтаксический анализатор кажется достаточно быстрым, но я не провел никакого анализа его скорости.
Он может быть не таким гибким в некоторых отношениях, как другие возможные проекты, но он позволяет определить ваши собственные коды («bb-код» или нет, с большим количеством свойств), а также содержится в одном файле. Это не простой синтаксический анализатор поиска и замены, он не основан на regex.
Если это представляет для вас какой-либо интерес, это может избавить вас от необходимости конвертировать другую библиотеку. Технически, я родственник «неизвестный,» но это замечательные вещи в JS/OSS: вы можете проверить источник, чтобы увидеть, что я сделал.
[2] В результате осталось несколько «функций совместимости», но я переписал вещи, которые имели доступные собственные эквиваленты.