javascript - javascript相等运算符为什么在toLowerCase()之后返回false,即使字符串相同(utf-8)?
问题描述
嗨,我正在尝试在 javascript 中运行此代码
const upperCase = "İ"
const lowerCase = "i"
const newLowerCase=upperCase.toLowerCase();
console.log(lowerCase);
console.log(newLowerCase);
// expected output: true, return false
console.log(newLowerCase == lowerCase);
这是返回 true
console.log("i".includes("i"))
但这也回归真实
console.log("İ".toLowerCase().includes("i"))
这一定与土耳其语中的字符有关,但我无法弄清楚为什么会发生这种情况。我该如何解决这个问题?
解决方案
的输出"İ".toLowerCase()
是一个小写字母i
,带有一个附加的\u0307
“上面的组合点”。
也就是说,结果是\u0069\u0307
。
因此,该字符串确实包含小写字母i
,因此是 的真实结果.include
,但它不等于小写字母i
。
推荐阅读
- javascript - 如何通过带有 (...) 的单词/字母修剪内容并取决于媒体屏幕
- javascript - throw new mongoose.Error.MissingSchemaError(name) MissingSchemaError: Schema 尚未注册模型“superheros”
- node.js - 如何在节点 js 中使用 json-rpc-client?
- assembly - 递归斐波那契 (NASM)
- node.js - 使用 express-flash 或 connect-flash 会导致空白消息对象
- html - 在 URL 中嵌入 HTML
- excel - 图表 x 轴显示数据点的数量,而不是动态数据集的实际 x 轴值
- c# - 使用 ASP.NET 核心在外部提供程序 API 登录后检索代码
- python - 如何使函数接受并输出 Dataframe 系列?
- c - “未定义的引用”或“函数的隐式声明”pthread_cond_*