去除行首指定字符(串)
1. 使用replace与正则表达式配合
QString s = "testHello world!!!";
s.replace(QRegExp("^test"), "");
qDebug()<<s;
"Hello world!!!"
1. 使用left与remove接口
QString s = "testHello world!!!";
if (s.left(4) == "test")
qDebug()<<s.remove(0, 4);
"Hello world!!!"
去除行尾指定字符(串)
1. 使用replace与正则表达式配合
QString s = "Hello world!!!test";
s.replace(QRegExp("test$"), "");
qDebug()<<s;
"Hello world!!!"
2. 使用right与remove接口
QString s = "Hello world!!!test";
if (s.right(4) == "test")
qDebug()<<s.remove(s.length() - 4, 4);
"Hello world!!!"
关于两种方法的使用性能比较
1. 100000次的测试代码
/// [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. 输出结果
455
89
3. 通过对比我们可以看到使用正则表达式会比使用left(right)与remove的形式慢,主要的原因是正则表达式需要解析表达式自身的原因。
总结