javascript - JavaScript 中的土耳其语大小写转换

标签 javascript internationalization uppercase lowercase

我想在我想要的语言环境中将 JavaScript 中的字符串转换为小写或大写。我认为像 toUpperCase()toLocaleUpperCase() 这样的标准函数不能满足这种需求。 toLocale 函数的行为不正常。

例如,在我的系统上的 Safari 4、Chrome 4 Beta、Firefox 3.5.x 中,它会错误地转换带有土耳其语字符的字符串。浏览器对 navigator.language 的响应分别为 "en-US""tr""en-US"。但据我所知,无法在浏览器中获取用户的 Accept-Lang 设置。尽管我已经配置了首选的每个浏览器土耳其语言环境,但只有 Chrome 为我提供了 "tr" 。我认为这些设置只影响 HTTP header ,但我们无法通过 JavaScript 访问这些设置。

Mozilla documentation它说

The characters within a string are converted to ... while respecting the current locale. For most languages, this will return the same as ...

我认为它对土耳其语有效,配置为 en 或 tr 没有区别。在土耳其语中,它应该将 "DıNÇ" 转换为 "dinç" 并将 "DINÇ" 转换为 "dınç" 或反之-反之亦然。

有没有JavaScript库可以满足这个需求?我认为它不仅应该在用户的区域设置中正确转换,而且还应该支持通过区域设置参数进行转换。因为开发人员无法访问用户配置的首选语言。

最佳答案

几年后回到这里提供更多最新的解决方案。

不需要下面的 hack,

只需使用 String.toLocaleUpperCase()String.toLocaleLowerCase()

"dinç".toLocaleUpperCase('tr-TR') // "DİNÇ"

现在所有现代浏览器都支持这一点。

<小时/>

[旧的,不要使用这个]

尝试这些功能

String.prototype.turkishToUpper = function(){
    var string = this;
    var letters = { "i": "İ", "ş": "Ş", "ğ": "Ğ", "ü": "Ü", "ö": "Ö", "ç": "Ç", "ı": "I" };
    string = string.replace(/(([iışğüçö]))+/g, function(letter){ return letters[letter]; })
    return string.toUpperCase();
}

String.prototype.turkishToLower = function(){
    var string = this;
    var letters = { "İ": "i", "I": "ı", "Ş": "ş", "Ğ": "ğ", "Ü": "ü", "Ö": "ö", "Ç": "ç" };
    string = string.replace(/(([İIŞĞÜÇÖ]))+/g, function(letter){ return letters[letter]; })
    return string.toLowerCase();
}

// Example
"DİNÇ".turkishToLower(); // => dinç
"DINÇ".turkishToLower(); // => dınç

我希望它们能为你工作。

关于javascript - JavaScript 中的土耳其语大小写转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1850232/

相关文章:

javascript - 使用 jQuery(或 javascript)从 CSS 选择器中选择文本

visual-studio-2010 - 如何在 Visual Studio 2010 中更改 TFS 工作项查询结果的日期格式

web-applications - 创建全局应用程序的痛苦

javascript - 在悬停元素中覆盖悬停样式

检查字母数字中字符是大写还是小写

sql - 如何在 SQL Server 中查找所有大写的值?

javascript - 在react-native组件中通过名称导入多个SVG

javascript - AngularJS - 在进度条 CSS 期间绘制边框

javascript - 使用 Google Apps 脚本循环遍历整个列

python - 如何在 python 中为多种语言编写文档字符串