toLowerCase()。需要帮助以更真实的方式理解这一点

时间:2019-02-18 22:37:28

标签: javascript string locale

console.log('ALPHABET'.toLocaleLowerCase());

console.log('\u0130'.toLocaleLowerCase('tr') === 'i');
console.log('\u0130'.toLocaleLowerCase('en-US') === 'i');

let locales = ['tr', 'TR', 'tr-TR', 'tr-u-co-search', 'tr-x-turkish'];
console.log('\u0130'.toLocaleLowerCase(locales) === 'i');

1 个答案:

答案 0 :(得分:0)

取自String.prototype.toLocaleLowerCase()

  

locale参数指示根据任何特定于语言环境的大小写映射转换为小写字母的语言环境。如果在数组中指定了多个语言环境,则使用最佳的语言环境。默认语言环境是主机环境的当前语言环境

简单地说,不同语言环境返回的值在视觉上可能看起来相同,但是它们的值不同。请在下面查看我的JavaScript。我已将值转换为提供的语言环境,并将其转换回Unicode,因此您可能会看到它们的实际值。

希望这会有所帮助

/* Helper function to display unicode value of a string 
http://buildingonmud.blogspot.com/2009/06/convert-string-to-unicode-in-javascript.html
*/
toUnicode = theString => {
  var unicodeString = '';
  [...theString].forEach((c, i) => {
    var theUnicode = c.charCodeAt(0).toString(16).toUpperCase();
    while (theUnicode.length < 4) {
      theUnicode = '0' + theUnicode;
    }
    theUnicode = '\\u' + theUnicode;
    unicodeString += theUnicode;
  });
  return unicodeString;
}

// Unicode value of 'i'
console.log(`Unicode value of 'i': '${toUnicode('i')}'`);

//'tr': Unicode value: '\u0069'
console.log(`Unicode value for 'tr': '${toUnicode('\u0130'.toLocaleLowerCase('tr'))}'`);

// 'en-US': Unicode value: '\u0069\u0307'
console.log(`Unicode value for 'en-US': '${toUnicode('\u0130'.toLocaleLowerCase('en-US'))}'`);

let locales = ['tr', 'TR', 'tr-TR', 'tr-u-co-search', 'tr-x-turkish'];
console.log(`Unicode value for locales: '${toUnicode('\u0130'.toLocaleLowerCase(locales))}'`);