QString 是Qt框架中用于处理字符串的类。它提供了丰富的字符串操作功能,可以用于处理文本、格式化输出、拼接字符串等。以下是一些常见的 QString 操作和用法示例:
创建 QString 对象:
QString str1 = "Hello, ";
QString str2("world!");
字符串连接和拼接:
QString result = str1 + str2; // 将两个字符串连接起来
result += " Welcome!"; // 追加字符串
获取字符串长度:
int length = result.length(); // 获取字符串长度
字符串比较:
if (str1 == str2) {
// 字符串相等
} else {
// 字符串不相等
}
子串提取:
QString subStr = result.mid(0, 5); // 提取从索引0开始的前5个字符
字符串查找:
int index = result.indexOf("world"); // 查找子串的位置,如果找不到返回-1
替换字符串:
result.replace("world", "universe"); // 将所有匹配的子串替换为新的字符串
大小写转换:
QString upperStr = result.toUpper(); // 将字符串转换为大写
QString lowerStr = result.toLower(); // 将字符串转换为小写
格式化字符串:
int number = 42;
QString formattedStr = QString("The answer is %1").arg(number); // 使用arg()函数格式化字符串
判断字符串是否为空:
if (result.isEmpty()) {
// 字符串为空
} else {
// 字符串不为空
}
转换为标准C++字符串:
std::string stdStr = result.toStdString(); // 转换为std::string
将标准C++字符串转换为QString:
QString qtStr = QString::fromStdString(stdStr); // 从std::string转换为QString
去除字符串两端的空白字符:
QString trimmedStr = result.trimmed(); // 去除两端的空格、制表符等空白字符
分割字符串:
`QStringList list = result.split(","); // 使用指定字符进行分割,结果存储在QStringLis`t中
获取字符或子串:
QChar firstChar = result.at(0); // 获取字符串的第一个字符
QString subStr = result.left(3); // 获取字符串的前3个字符
插入字符或子串:
result.insert(5, "123"); // 在索引5处插入字符串
移除字符或子串:
result.remove(0, 5); // 从索引0开始移除5个字符
字符串比较(不区分大小写):
if (str1.compare(str2, Qt::CaseInsensitive) == 0) {
// 字符串相等(不区分大小写)
}
格式化浮点数:
double value = 3.14159265359;
QString formattedFloat = QString::number(value, 'f', 2); // 格式化浮点数保留2位小数
使用正则表达式进行匹配和替换:
QRegExp regex("world");
result.replace(regex, “universe”); // 使用正则表达式替换匹配的子串
字符串转换为整数或浮点数:
QString numStr = "42";
int intValue = numStr.toInt(); // 转换为整数
double doubleValue = numStr.toDouble();// 转换为浮点数
字符串是否以特定前缀或后缀开始/结束:
bool startsWith = result.startsWith("Hello"); // 检查字符串是否以指定前缀开始
bool endsWith = result.endsWith("Welcome!"); // 检查字符串是否以指定后缀结束
获取字符的 Unicode 编码点:
QChar character = 'A';
int unicode = character.unicode(); // 获取字符 'A' 的 Unicode 编码
根据格式化规则进行字符串比较:
QString str1 = "apple";
QString str2 = "Banana";
int compareResult = QString::localeAwareCompare(str1, str2); // 根据当前区域设置进行字符串比较
多次替换多个子串:
QMap<QString, QString> replacements;
replacements["apple"] = "fruit";
replacements["banana"] = "fruit";
result.replace(QRegExp("apple|banana"), replacements); // 一次替换多个子串
字符串格式化和插值:
int apples = 5;
QString message = QString("I have %1 apples").arg(apples); // 使用arg()插值
使用正则表达式进行字符串匹配和捕获:
QRegExp regex("(\\d+)-(\\d+)-(\\d+)");
QString text = "Date: 2023-10-08";
if (regex.indexIn(text) != -1) {
QString year = regex.cap(1); // 捕获第一个括号中的内容
QString month = regex.cap(2); // 捕获第二个括号中的内容
QString day = regex.cap(3); // 捕获第三个括号中的内容
}
字符串转换为 UTF-8 编码的字节数组:
QByteArray byteArray = result.toUtf8();
在字符串中查找最后一次出现的子串:
int lastIndex = result.lastIndexOf("o"); // 查找最后一次出现字符 "o" 的位置
将字符串拆分为多行文本:
QString multilineText = "Line 1\nLine 2\nLine 3";
QStringList lines = multilineText.split("\n"); // 将字符串按行拆分为 QStringList