QString的常用操作
QString
是 Qt 中用于处理字符串的类,提供了丰富的功能来操作 Unicode 字符串。以下是 QString
的常用操作及其示例代码。
1. 创建和初始化
示例代码
QString str1 = "Hello, World!"; // 直接初始化
QString str2("Qt is great!"); // 构造函数初始化
QString str3 = QString::fromUtf8("UTF-8 字符串"); // 从 UTF-8 编码初始化
2. 字符串连接
示例代码
QString str1 = "Hello";
QString str2 = "World";
QString result = str1 + ", " + str2 + "!"; // 使用 + 连接
qDebug() << result; // 输出: "Hello, World!"
3. 字符串格式化
使用 arg()
格式化
QString name = "Alice";
int age = 25;
QString message = QString("My name is %1, and I am %2 years old.").arg(name).arg(age);
qDebug() << message; // 输出: "My name is Alice, and I am 25 years old."
4. 字符串查找和替换
查找子字符串
QString str = "Hello, World!";
int index = str.indexOf("World"); // 查找子字符串的位置
qDebug() << index; // 输出: 7
替换子字符串
QString str = "Hello, World!";
str.replace("World", "Qt"); // 替换子字符串
qDebug() << str; // 输出: "Hello, Qt!"
5. 字符串分割
使用 split()
分割
QString str = "apple,banana,orange";
QStringList fruits = str.split(","); // 按逗号分割
for (const QString& fruit : fruits) {
qDebug() << fruit;
}
// 输出:
// "apple"
// "banana"
// "orange"
6. 字符串大小写转换
转换为大写
QString str = "Hello, World!";
QString upper = str.toUpper(); // 转换为大写
qDebug() << upper; // 输出: "HELLO, WORLD!"
转换为小写
QString str = "Hello, World!";
QString lower = str.toLower(); // 转换为小写
qDebug() << lower; // 输出: "hello, world!"
7. 去除空白字符
去除两端空白
QString str = " Hello, World! ";
QString trimmed = str.trimmed(); // 去除两端空白
qDebug() << trimmed; // 输出: "Hello, World!"
去除所有空白
QString str = " Hello, World! ";
QString simplified = str.simplified(); // 去除所有空白
qDebug() << simplified; // 输出: "Hello, World!"
8. 字符串比较
区分大小写比较
QString str1 = "Hello";
QString str2 = "hello";
bool equal = (str1 == str2); // 区分大小写比较
qDebug() << equal; // 输出: false
不区分大小写比较
QString str1 = "Hello";
QString str2 = "hello";
bool equal = str1.compare(str2, Qt::CaseInsensitive) == 0; // 不区分大小写比较
qDebug() << equal; // 输出: true
9. 字符串长度和空判断
获取字符串长度
QString str = "Hello, World!";
int length = str.length(); // 获取字符串长度
qDebug() << length; // 输出: 13
判断字符串是否为空
QString str;
bool isEmpty = str.isEmpty(); // 判断字符串是否为空
qDebug() << isEmpty; // 输出: true
10. 字符串截取
使用 mid()
截取子字符串
QString str = "Hello, World!";
QString subStr = str.mid(7, 5); // 从第 7 个字符开始,截取 5 个字符
qDebug() << subStr; // 输出: "World"
使用 left()
和 right()
截取
QString str = "Hello, World!";
QString left = str.left(5); // 截取前 5 个字符
QString right = str.right(6); // 截取后 6 个字符
qDebug() << left; // 输出: "Hello"
qDebug() << right; // 输出: "World!"
11. 字符串转换为数字
转换为整数
QString str = "123";
int number = str.toInt(); // 转换为整数
qDebug() << number; // 输出: 123
转换为浮点数
QString str = "3.14";
double number = str.toDouble(); // 转换为浮点数
qDebug() << number; // 输出: 3.14
12. 数字转换为字符串
整数转换为字符串
int number = 123;
QString str = QString::number(number); // 整数转换为字符串
qDebug() << str; // 输出: "123"
浮点数转换为字符串
double number = 3.14;
QString str = QString::number(number); // 浮点数转换为字符串
qDebug() << str; // 输出: "3.14"
13. 字符串编码转换
转换为 UTF-8
QString str = "你好,世界!";
QByteArray utf8 = str.toUtf8(); // 转换为 UTF-8 编码
qDebug() << utf8;
从 UTF-8 转换
QByteArray utf8 = "你好,世界!";
QString str = QString::fromUtf8(utf8); // 从 UTF-8 编码转换
qDebug() << str;
14. 字符串填充
左填充
QString str = "123";
QString padded = str.leftJustified(10, '0'); // 左填充到 10 个字符,用 '0' 填充
qDebug() << padded; // 输出: "1230000000"
右填充
QString str = "123";
QString padded = str.rightJustified(10, '0'); // 右填充到 10 个字符,用 '0' 填充
qDebug() << padded; // 输出: "0000000123"
15. 字符串正则表达式
使用正则表达式匹配
QString str = "Email: example@example.com";
QRegularExpression regex("(\\w+@\\w+\\.\\w+)");
QRegularExpressionMatch match = regex.match(str);
if (match.hasMatch()) {
QString email = match.captured(0); // 获取匹配的字符串
qDebug() << email; // 输出: "example@example.com"
}
总结
QString
提供了丰富的功能来操作 Unicode 字符串,包括创建、连接、格式化、查找、替换、分割、大小写转换、去除空白、比较、截取、转换、编码转换、填充和正则表达式等。掌握这些操作可以极大地提高字符串处理的效率。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2024-02-26 Windows下破解SecureCRT和SecureFx软件