Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как правильно преобразовать строку в заглавный регистр с учетом турецкого алфавита и символов разделения в JavaScript

Delphi , Программа и Интерфейс , Заголовок формы

Преобразование строки в заглавный регистр с учетом турецкого алфавита в JavaScript

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

Проблема

Пользователь столкнулся с проблемой преобразования строки в заглавный регистр (Title Case), который подразумевает преобразование начальной буквы каждого слова в заглавную, а остальных букв - в строчные. Однако в случае с турецким алфавитом, который включает в себя символы типа "ş", "ğ", "ç", "ı", "ü", "ö" и их заглавные аналоги, стандартные методы JavaScript не дают корректного результата.

Решение

Для решения проблемы можно использовать следующий подход:

  1. Создать функцию toLocaleProperCase2, которая будет учитывать особенности турецкого алфавита.
  2. Добавить в прототип String методы для преобразования в заглавный, строчный регистр и в регистр Title Case, учитывая локаль.
(function(){
    // Объект с информацией о локали
    var localeInfos = {
        "tr-TR": {
            lower: { i:"İ", ı:"I", ş:"Ş", ğ:"Ğ", ü:"Ü", ç:"Ç", ö:"Ö" },
            upper: { İ:"i", I:"ı", Ş:"ş", Ğ:"ğ", Ü:"ü", Ç:"ç", Ö:"ö" }
        }
    };
    // Регулярное выражение для разделения строки
    var mask = "\\s:-", // Можно добавить дополнительные символы разделения
        rg = new RegExp("([^"+mask+"])([^"+mask+"]*)","g");

    // Функции для локальных преобразований
    var fnToLocaleLower = function(s){ return localeInfos.tr_TR.upper[s]; },
        fnToLocaleUpper = function(s){ return localeInfos.tr_TR.lower[s]; },
        fnToProper = function($0,$1,$2){
            if(localeInfos.tr_TR.lower.hasOwnProperty($1))$1 = localeInfos.tr_TR.lower[$1];
            $2 = $2.replace(localeInfos.tr_TR.upperSearchRegExp,fnToLocaleLower);
            return $1.toUpperCase() + $2.toLowerCase();
        };

    // Инициализация регулярных выражений для поиска
    for(var i in localeInfos){
        var localeInfo = localeInfos[i];
        localeInfo.lowerSearchRegExp = new RegExp("["+Object.keys(localeInfo.lower).join("")+"]","g");
        localeInfo.upperSearchRegExp = new RegExp("["+Object.keys(localeInfo.upper).join("")+"]","g");
    }

    // Расширение прототипа String
    String.prototype.toLocaleProperCase2 = function(locale){
        var localeInfo = localeInfos[locale.toLowerCase()];
        return this.replace(rg,fnToProper);
    };
    String.prototype.toLocaleLowerCase2 = function(locale){
        var localeInfo = localeInfos[locale.toLowerCase()];
        return this.replace(localeInfo.upperSearchRegExp,fnToLocaleLower).toLowerCase();
    };
    String.prototype.toLocaleUpperCase2 = function(locale){
        var localeInfo = localeInfos[locale.toLowerCase()];
        return this.replace(localeInfo.lowerSearchRegExp,fnToLocaleUpper).toUpperCase();
    };
})();

Примеры использования

var str = "şeker çOBAN ırMAk inTEad oF ÇOBAN İRMAK Hello-WORLD";
console.log(str.toLocaleProperCase2("tr-TR")); // Выведет: Şeker Çoban Irmak Intead Of Çoban İrmak Hello-World

Заключение

Использование предложенного решения позволит корректно преобразовывать строки в заглавный регистр, учитывая особенности турецкого алфавита и символы разделения. Это особенно важно для многоязычных веб-приложений, где требуется единообразие отображения текстовых данных.

Создано по материалам из источника по ссылке.

Вопрос касается преобразования строки в заглавный регистр с учётом особенностей турецкого алфавита при помощи JavaScript.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Заголовок формы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 13:19:20/0.0049397945404053/1