前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt之去除指定行首/行尾字符(串)

Qt之去除指定行首/行尾字符(串)

作者头像
Qt君
发布2019-07-15 15:08:42
3.8K0
发布2019-07-15 15:08:42
举报
文章被收录于专栏:跟Qt君学编程

去除行首指定字符(串)

1. 使用replace与正则表达式配合

  • 其正则表达式形式为需要去除的'^'符号+'字符';
  • '^'符号的意思为结尾。
代码语言:javascript
复制
QString s = "testHello world!!!";
s.replace(QRegExp("^test"), "");
qDebug()<<s;
  • 输出结果:
代码语言:javascript
复制
"Hello world!!!"

1. 使用left与remove接口

  • left(n)为从行首往后找n个字符;
  • remove(position, n), position为行中位置,n为删除的字符数量。
代码语言:javascript
复制
QString s = "testHello world!!!";
if (s.left(4) == "test")
    qDebug()<<s.remove(0, 4);
  • 输出结果:
代码语言:javascript
复制
"Hello world!!!"

去除行尾指定字符(串)

1. 使用replace与正则表达式配合

  • 其正则表达式形式为需要去除的'字符'+'$'符号;
  • '$'符号的意思为结尾。
代码语言:javascript
复制
QString s = "Hello world!!!test";
s.replace(QRegExp("test$"), "");
qDebug()<<s;
  • 输出结果:
代码语言:javascript
复制
"Hello world!!!"

2. 使用right与remove接口

  • right(n)为从行尾往前找n个字符;
  • remove(position, n), position为行中位置,n为删除的字符数量。
代码语言:javascript
复制
QString s = "Hello world!!!test";
if (s.right(4) == "test")
    qDebug()<<s.remove(s.length() - 4, 4);
  • 输出结果:
代码语言:javascript
复制
"Hello world!!!"

关于两种方法的使用性能比较

1. 100000次的测试代码

代码语言:javascript
复制
/// [0]
QElapsedTimer timer;
timer.start();
for (int i = 0; i < 100000; i++) {
    QString s = "testHello world!!!";
    s.replace(QRegExp("^test"), "");
}
qDebug()<<timer.elapsed();
/// [0]

/// [1]
timer.start();
for (int i = 0; i < 100000; i++) {
    QString s = "testHello world!!!";
    if (s.left(4) == "test")
        s.remove(0, 4);
}
qDebug()<<timer.elapsed();
/// [1]

2. 输出结果

代码语言:javascript
复制
455
89

3. 通过对比我们可以看到使用正则表达式会比使用left(right)与remove的形式慢,主要的原因是正则表达式需要解析表达式自身的原因。

总结

  • 正则表达式使用方便,但性能会差点,处理字符且次数不多的情况下可以使用;
  • 使用left(right)与remove组合操作上会多写一步,但性能更好;
  • 正则表达式式一般是处理较为复杂的场合。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档