Qt中,如何在QTextEdit中挨个提取字符?

纹枰老妖 2021-01-11 07:20:32
我有一个QTextEdit的文本,里面是一些字符串啥的,我还另有一个空的字符数组,如果我想从QTextEdit文本中往我的字符数组拷贝字符【QTextEdit文本中有我不想要的某些字符,还有需要修改替换的字符】,我应该怎么做啊?今天试了一下午了,貌似在QTextEdit中找不到可以挨个处理字符的函数啊,所以来这里求教热心大佬,谢谢大家的阅读!
...全文
4730 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Italink 2021-01-14
  • 打赏
  • 举报
回复

    QString str="asda  asdasdaA   b";
    str.replace(QRegExp("([A-Z]) +([a-z])"),"\\1 \\2");
试试这个代码 你在Qtcreator进一下QString::relpace的文档可以看到如下说明: QString &QString::replace(const QRegularExpression &re, const QString &after) This function overloads replace(). Replaces every occurrence of the regular expression re in the string with after. Returns a reference to the string. For example:
  QString s = "Banana";
  s.replace(QRegularExpression("a[mn]"), "ox");
  // s == "Boxoxa"
For regular expressions containing capturing groups, occurrences of \1, \2, ..., in after are replaced with the string captured by the corresponding capturing group.
  QString t = "A <i>bon mot</i>.";
  t.replace(QRegularExpression("<i>([^<]*)</i>"), "\\emph{\\1}");
  // t == "A \\emph{bon mot}."
This function was introduced in Qt 5.0.
纹枰老妖 2021-01-14
  • 打赏
  • 举报
回复
不好意思是我没表达明白。是这样的,我要处理的是两边都是大写字母之间的空格,比如上面的那些空格换成一个空格就好。但是,如果空格们两边不都是大写字母的话,比如【ABCD xyZ】,那么这种字符串不要处理,保持原始即可,因为空格右边的是小写x,不满足条件。所以这样的话,那个正则我该怎么写啊?
Italink 2021-01-14
  • 打赏
  • 举报
回复
方括号里面的
Italink 2021-01-14
  • 打赏
  • 举报
回复
就是这个表达式啊 [空格*] ()
纹枰老妖 2021-01-14
  • 打赏
  • 举报
回复
引用 6 楼 Italink 的回复:
用正则表达式[空格*]
烦劳明示,就是那个正则表达式【[A-Z]\s+[A-Z]】,应该改成什么样子,才能仅仅把多个空格替换成一个空格,但却同时能保留住D和X呢?
Italink 2021-01-13
  • 打赏
  • 举报
回复
用正则表达式[空格*]
纹枰老妖 2021-01-13
  • 打赏
  • 举报
回复
引用 1 楼 Italink 的回复:
可以用text()获得全部字符,用正则表达式处理好之后再放进去
谢谢您!不过我这里遇到一点使用正则替换的小问题,想请教一下您:比如我有一个原始字符串【ABCD XYZ】,然后我用的正则表达式是【[A-Z]\s+[A-Z]】,我想把原始字符串的匹配串(里面太多空格了)都用一个空格来替换,可是替换之后的结果是【ABC YZ】,空格确实从三个变成了一个,达到我目的,但是,正则还把那个D和X都去掉了,请问我该怎么做?
纹枰老妖 2021-01-12
  • 打赏
  • 举报
回复
引用 1 楼 Italink 的回复:
可以用text()获得全部字符,用正则表达式处理好之后再放进去
那可不可以使用一个QString获取那个QTextEdit的全部文本,然后从这个QString里面挨个读取字符【正则表达式我不熟】
芒果黑 2021-01-12
  • 打赏
  • 举报
回复
引用 2 楼 纹枰老妖 的回复:
[quote=引用 1 楼 Italink 的回复:]可以用text()获得全部字符,用正则表达式处理好之后再放进去
那可不可以使用一个QString获取那个QTextEdit的全部文本,然后从这个QString里面挨个读取字符【正则表达式我不熟】[/quote] 可以的
戏言zare 2021-01-12
  • 打赏
  • 举报
回复
ui->textEdit->toPlainText()
Italink 2021-01-11
  • 打赏
  • 举报
回复
可以用text()获得全部字符,用正则表达式处理好之后再放进去

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧