JavaScript中的土耳其语案例转换

san*_*nlu 28 javascript turkish lowercase internationalization uppercase

我想在我想要的语言环境中将字符串转换为JavaScript中的大小写.我认为标准功能喜欢toUpperCase()并且toLocaleUpperCase()不满足这种需求.toLocale函数不能正常运行.

例如,在我的系统上的Safari 4,Chrome 4 Beta,Firefox 3.5.x中,它会错误地转换带有土耳其语字符的字符串.该浏览器响应navigator.language为"en-US","tr","en-US"分别.但是Accept-Lang我无法在浏览器中找到用户的设置."tr"虽然我已经将每个浏览器土耳其语区域设置为首选,但只有Chrome会给我 我认为这些设置仅影响HTTP标头,但我们无法通过JavaScript访问这些设置.

Mozilla文档中,它说

字符串中的字符将转换为...,同时尊重当前区域设置.对于大多数语言,这将返回相同的...

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

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

Ser*_*sen 56

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

下面没有必要进行黑客攻击,

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

"dinç".toLocaleUpperCase('tr-TR') // "D?NÇ"
Run Code Online (Sandbox Code Playgroud)

所有浏览器现在支持此功能


[旧,请勿使用此]

试试这些功能

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ç
Run Code Online (Sandbox Code Playgroud)

我希望他们能为你工作.

  • 第二个答案更好我认为> http://stackoverflow.com/a/5991351/11374.因为如果两个或多个字符彼此相邻,则不能降低 (3认同)
  • toTurkishUpper和toTurkishLower更容易理解. (2认同)

小智 26

谢谢你的功能.我真的很喜欢它.连续的土耳其字符输入结果'undefined'为'ÇÇ'.尝试用'/ g'替换'/ + g'.功能将是:

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();
}
Run Code Online (Sandbox Code Playgroud)