新浪微博
腾讯微博
会员列表
统计排行
基本信息
到访IP统计
管理团队
管理统计
在线会员
会员排行
版块排行
帖子排行
标签排行
帮助
下拉
用户名
电子邮箱
用户名
密 码
记住登录
登录
找回密码
注册
快捷通道
关闭
您还没有登录,快捷通道只有在登录后才能使用。
立即登录
还没有帐号? 赶紧
注册一个
首页
论坛
Qt下载
作品展
群组
个人中心
捐赠、管理与开发
邮件订阅
帖子
文章
日志
用户
版块
群组
帖子
搜索
QTCN开发网
>
Qt基础编程
>
有没有办法让QString::replace只执行一次
发帖
回复
返回列表
新帖
9448
阅读
13
回复
[提问]
有没有办法让QString::replace只执行一次
[复制链接]
上一主题
下一主题
离线
呆呆很呆
UID:120998
注册时间
2011-08-18
最后登录
2013-09-28
在线时间
268小时
发帖
322
搜Ta的帖子
精华
0
金钱
3365
威望
344
贡献值
0
好评度
334
访问TA的空间
加好友
用道具
骑士
关闭
个人中心可以申请新版勋章哦
立即申请
知道了
加关注
发消息
只看楼主
倒序阅读
楼主
发表于: 2013-04-04
关键词:
没有
QString
执行
正则表达式
我需要用
QString
& QString::replace(const QRegExp &
rx
, const QString &
after
)
可是他是默认全部替换的 我只需要替换第一个 如果是QString替换成QString还好办 可又需要
正则表达式
找了半天文档
没有
找到相应的函数 又搜了半天百度、谷歌 还是无果
共
条评分
回复
举报
分享到
淘江湖
新浪
QQ微博
QQ空间
开心
人人
豆瓣
网易微博
百度
鲜果
白社会
飞信
离线
roywillow
UID:97396
注册时间
2010-05-15
最后登录
2021-09-20
在线时间
5071小时
发帖
2897
搜Ta的帖子
精华
5
金钱
29175
威望
2924
贡献值
2
好评度
2916
访问TA的空间
加好友
用道具
精灵王
加关注
发消息
只看该作者
1楼
发表于: 2013-04-04
回 楼主(呆呆很呆) 的帖子
那就只有先find了?
另外应该有重载是不用正则的吧
再说就算用正则,也可以直接用固定的字符串啊
共
条评分
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
回复
举报
离线
呆呆很呆
UID:120998
注册时间
2011-08-18
最后登录
2013-09-28
在线时间
268小时
发帖
322
搜Ta的帖子
精华
0
金钱
3365
威望
344
贡献值
0
好评度
334
访问TA的空间
加好友
用道具
骑士
加关注
发消息
只看该作者
2楼
发表于: 2013-04-04
回 1楼(roywillow) 的帖子
1.find倒是想过 可是替换条件里的“\\1”什么的还要自己处理 很麻烦的 我去查了源码 一大堆
2.可是我必须要用正则啊 而且\\1必须考虑啊
共
条评分
回复
举报
离线
jdwx
UID:107742
注册时间
2010-11-12
最后登录
2016-02-01
在线时间
4619小时
发帖
2939
搜Ta的帖子
精华
0
金钱
30465
威望
3015
贡献值
0
好评度
3005
访问TA的空间
加好友
用道具
论坛版主
加关注
发消息
只看该作者
3楼
发表于: 2013-04-04
回 2楼(呆呆很呆) 的帖子
用find或indexOf找到第一个,在第一个要替换的部分后面,把字符串拆成两段,前半段替换,再把两个字符串连起来。
源串:123abc,4567abcggjdlkjabc 替换第一个abc为xxx
拆成两个:123abc和,4567abcggjdlkjabc
替换第一个:123xxx
连起来:123xxx,4567abcggjdlkjabc
共
条评分
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
回复
举报
离线
呆呆很呆
UID:120998
注册时间
2011-08-18
最后登录
2013-09-28
在线时间
268小时
发帖
322
搜Ta的帖子
精华
0
金钱
3365
威望
344
贡献值
0
好评度
334
访问TA的空间
加好友
用道具
骑士
加关注
发消息
只看该作者
4楼
发表于: 2013-04-04
回 3楼(jdwx) 的帖子
这个我也想到了 那后面可能有的(?=xxx)怎么办 再弄个正则表达式分析器?
比如:abc aaa abc aaa 符合 abc(?= a)
拆开后:abc、aaa abc aaa 却不符合 abc(?= a)
matchedLength不计(?= a) 只返回3
共
条评分
回复
举报
离线
rpdhunter
UID:89367
注册时间
2009-12-21
最后登录
2022-01-08
在线时间
268小时
发帖
174
搜Ta的帖子
精华
0
金钱
1784
威望
185
贡献值
1
好评度
175
访问TA的空间
加好友
用道具
侠客
加关注
发消息
只看该作者
5楼
发表于: 2013-04-04
回 4楼(呆呆很呆) 的帖子
不是很懂你的意思
共
条评分
回复
举报
离线
呆呆很呆
UID:120998
注册时间
2011-08-18
最后登录
2013-09-28
在线时间
268小时
发帖
322
搜Ta的帖子
精华
0
金钱
3365
威望
344
贡献值
0
好评度
334
访问TA的空间
加好友
用道具
骑士
加关注
发消息
只看该作者
6楼
发表于: 2013-04-04
回 5楼(rpdhunter) 的帖子
有什么不能懂的吗? 就是说合起来匹配分开就不能匹配的正则表达式 怎么处理
共
条评分
回复
举报
离线
rpdhunter
UID:89367
注册时间
2009-12-21
最后登录
2022-01-08
在线时间
268小时
发帖
174
搜Ta的帖子
精华
0
金钱
1784
威望
185
贡献值
1
好评度
175
访问TA的空间
加好友
用道具
侠客
加关注
发消息
只看该作者
7楼
发表于: 2013-04-04
回 6楼(呆呆很呆) 的帖子
什么叫做合起来匹配,分开就不匹配呢?
abc aaa abc aaa,查找到2个abc
:abc、aaa abc aaa ,第一个也能查找到abc啊
共
条评分
回复
举报
离线
呆呆很呆
UID:120998
注册时间
2011-08-18
最后登录
2013-09-28
在线时间
268小时
发帖
322
搜Ta的帖子
精华
0
金钱
3365
威望
344
贡献值
0
好评度
334
访问TA的空间
加好友
用道具
骑士
加关注
发消息
只看该作者
8楼
发表于: 2013-04-04
回 7楼(rpdhunter) 的帖子
abc(?= a)查不到啊
共
条评分
回复
举报
离线
呆呆很呆
UID:120998
注册时间
2011-08-18
最后登录
2013-09-28
在线时间
268小时
发帖
322
搜Ta的帖子
精华
0
金钱
3365
威望
344
贡献值
0
好评度
334
访问TA的空间
加好友
用道具
骑士
加关注
发消息
只看该作者
9楼
发表于: 2013-04-04
回 7楼(rpdhunter) 的帖子
能查到abc 但是用户可能输入的abc(?= a)却查不到 我怎么解释
共
条评分
回复
举报
离线
呆呆很呆
UID:120998
注册时间
2011-08-18
最后登录
2013-09-28
在线时间
268小时
发帖
322
搜Ta的帖子
精华
0
金钱
3365
威望
344
贡献值
0
好评度
334
访问TA的空间
加好友
用道具
骑士
加关注
发消息
只看该作者
10楼
发表于: 2013-04-04
复制代码
#include <QtCore>
int main(int argc,char* argv[])
{
QCoreApplication app(argc,argv);
QRegExp reg("abc(?= a)");
QString s1("abc aaa");
QString s2("abc");
qDebug()<<s1.indexOf(reg)<<s2.indexOf(reg);
return 0;
}
输出:
复制代码
0 -1
共
条评分
回复
举报
离线
roywillow
UID:97396
注册时间
2010-05-15
最后登录
2021-09-20
在线时间
5071小时
发帖
2897
搜Ta的帖子
精华
5
金钱
29175
威望
2924
贡献值
2
好评度
2916
访问TA的空间
加好友
用道具
精灵王
加关注
发消息
只看该作者
11楼
发表于: 2013-04-04
回 9楼(呆呆很呆) 的帖子
如果只是正则的使用不太清楚的话,可以先试试用RegexBuddy之类的软件调试一下
共
条评分
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
回复
举报
离线
呆呆很呆
UID:120998
注册时间
2011-08-18
最后登录
2013-09-28
在线时间
268小时
发帖
322
搜Ta的帖子
精华
0
金钱
3365
威望
344
贡献值
0
好评度
334
访问TA的空间
加好友
用道具
骑士
加关注
发消息
只看该作者
12楼
发表于: 2013-04-05
回 11楼(roywillow) 的帖子
不是这个意思。。。。。
共
条评分
回复
举报
离线
呆呆很呆
UID:120998
注册时间
2011-08-18
最后登录
2013-09-28
在线时间
268小时
发帖
322
搜Ta的帖子
精华
0
金钱
3365
威望
344
贡献值
0
好评度
334
访问TA的空间
加好友
用道具
骑士
加关注
发消息
只看该作者
13楼
发表于: 2013-04-05
还有一个办法是这样
复制代码
void replaceOnce(QString &s,const QRegExp &exp2,const QString &after)
{
QRegExp exp(exp2);
int index = s.indexOf(exp);
if(index != -1){
int length = exp.matchedLength();
for(int i=length;;++i){
QString ref = s.mid(index,i);
if(ref.indexOf(exp) != -1){
QString afterReplace = ref.replace(exp,after);
s = s.replace(index,i,afterReplace);
break;
}
}
}
}
可是QStringRef没有重载indexOf(QRegExp) 所以效率是个问题 只能深复制用QString了
共
条评分
回复
举报
发帖
回复
返回列表
http://www.qtcn.org/bbs
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问
快速回复
限100 字节
您目前还是游客,请
登录
或
注册
进入高级模式
文字颜色
发 布
回复后跳转到最后一页
上一个
下一个
关闭
补充发布信息
验证码:
发 布
隐藏
快速跳转
站务及资讯
网站公告
新闻资讯
Qt官方发布
网站管理
Qt应用及资源
Qt 作品展
Qt代码秀
Qt应用版
Qt技术讨论区
Qt安装与发布
Qt中文处理
Qt基础编程
Qt QML开发
Qt嵌入式开发
Qt移动平台开发
其它技术开发讨论区
Qt图书专区
《C++ GUI Qt 4编程》(第2版)专栏
《Qt高级编程》专栏
《零基础学Qt4编程》专栏
《Qt设计模式》(第2版) 图书专栏
Python Qt GUI快速编程
Qt项目开发区
天池项目
Qt开放平台开发库
机械CAD
扇贝词典
非活跃项目区
社区中心
帖子回收站(Trash)
招聘、求职、供求、广告等
休闲娱乐
关闭
关闭
选中
1
篇
全选