QString 详细介绍(二)

QString 提供了一系列操作字符串的函数:append(),preappend(),replace(),remove()等,用法如下:

QString str = "and";
str.prepend("rock "); // str == "rock and"
str.append(" roll"); // str == "rock and roll"
str.replace(5, 3, "&"); // str == "rock & roll"
str.remove(0,7); //"roll"

replace() 和 remove() 函数的前两个参数是开始擦除的位置和应该擦除的字符数。如果要将特定子字符串的所有匹配项替换为另一个子字符串,可以使用双参数 replace() 重载。

如果你要构建一个事先知道将包含多少个字符的 QString ,你可以调用 reserve(),预先分配一定量的内存。你也可以调用 capacity() 来找出 QString 实际分配了多少内存。

QString result;
result.reserve(1024); // 预留1024字符内存
int reserveSize = result.capacity(); // 1024

常见的要求是从字符串("\n"、"\t”、" "等)中删除空格字符。如果要删除 QString 两端的空格,使用 trimmed() 函数。如果要删除两端的空格,并将字符串中的多个连续空格替换为单个空格字符,使用 simplified()。

QString str = " lots\t of\nwhitespace\r\n ";
str = str.trimmed(); // str == "lots\t of\nwhitespace"

QString str = " lots\t of\nwhitespace\r\n ";
str = str.simplified(); // str == "lots of whitespace";

如果要查找 QString 中特定字符或子字符串的所有匹配项,请使用 indexOf() 或 lastIndexOf() 函数。前者从给定的索引位置开始向前搜索,后者向后搜索。如果找到字符或子字符串,两者都返回它的索引位置;否则,它们返回 -1。例如,下面是一个典型的循环,用于查找特定子字符串的所有匹配项:

QString str = "We must be <b>bold</b>, very <b>bold</b>";
int j = 0;

while ((j = str.indexOf("<b>", j)) != -1) {
    qDebug() << "Found <b> tag at index position" << j;
    ++j;
}
// Found tag at index position 11
// Found tag at index position 29

QString 提供了许多函数,用于将数字转换为字符串和字符串转换为数字。请参阅 arg() 函数、setNum() 函数、number() 静态函数和 toInt()、toDouble() 和类似函数。

要获取字符串的大写或小写版本,使用 toUpper() 或 toLower()。

QString str = "TeXt";
str = str.toUpper();        // str == "TEXT"
str = str.toLower();        // str == "text"

字符串列表由 QStringList 类处理。可以使用 split() 函数将字符串拆分为字符串列表,并使用 QStringList::join() 将字符串列表连接到带有可选分隔符的单个字符串中。您可以使用 QStringList::filter() 函数从包含特定子字符串或与特定 QRegExp 匹配的字符串列表中获取字符串列表。

QStringList list;
list << "Bill Murray" << "John Doe" << "Bill Clinton";
QStringList result;
result = list.filter("Bill");
// result: ["Bill Murray", "Bill Clinton"]

QStringList result1;
foreach (const QString &str, list) {
    if (str.contains("Bill"))
        result1 += str;
}
// result1: ["Bill Murray", "Bill Clinton"]

后续公众号会发布系列教程,更多内容请关注公众号:程序猿学习日记

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值