将字符与 Qt 中的 Unicode 进行比较

compare a character with an unicode in Qt

本文关键字:比较 Unicode 中的 字符 Qt      更新时间:2023-10-16
if (lineEditText[i] == 'đ' || lineEditText[i] == 'Đ')
     lineEditText.replace(i, 1, "d");

我想将 (i( 类型的字符与上述 Unicode 进行比较。但它不起作用。那么我该如何比较呢?

用字符构建QString并使用它们进行比较:

if (lineEditText[i] == QString("đ")[0] || lineEditText[i] == QString("Đ")[0])

或者使用宽字符文字,以便将它们正确转换为QChar

if (lineEditText[i] == L'đ' || lineEditText[i] == L'Đ') 

您可以从其十六进制代码生成 unicode 字符并将其传递给 QChar(uint(hexValue) 。只要两边的数据类型相同,就可以与QChar的"=="进行比较。

uint unicodeCapitalD = 0x00D0
unit unicodeSmallD = 0x0111
if (lineEditText[i] == QChar(unicodeSmallD) || lineEditText[i] == QChar(unicodeCapitalD))
    //whatever you want to do

编辑:我之前的答案集中在生成包含 unicode 字符而不是QChar的 QString 上。 QString::fromUcs4()不起作用,因为您试图将其与 QLineEdit 中的特定字符与 unicode 字符进行比较(我应该生成一个 QChar 而不是 QString 进行比较(。