一个QString类型字符串,如何去掉其中的某一特定字符,比如“\n”

 我来答
tcl203
推荐于2018-08-07 · TA获得超过392个赞
知道小有建树答主
回答量:317
采纳率:88%
帮助的人:268万
展开全部

QString的以下成员函数可以用于删除某一特定字符:

QString &QString::remove(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive)

例如:

QString t = "A\nB\nC";
t.remove(QChar('\n'), Qt::CaseInsensitive);
// 结果为:t == "ABC"

也可以使用QString的replace成员函数将某一特定字符替换为空字符来实现删除的效果。

关于QString的remove和replace成员函数都有多个重载,适用于不同的入参。

详细说明请参考官方帮助文档:网页链接

职场咨询师小陈

2021-04-07 · TA获得超过1.7万个赞
知道大有可为答主
回答量:9649
采纳率:99%
帮助的人:222万
展开全部
对于不清楚字符编码是个啥东西的小白,可以看这篇文章科普一下:“字符编码是个啥 - Qt必备技能”。

QString 类用于存储 Unicode 字符串。在 Qt 中存储一个 Unicode 字符是用 QChar 类,那么 QString 就是存储着一个个的 QChar。

QString 类采用了隐式共享方式来避免不必要的数据复制,减少了内存的使用。

几个需要注意的点
关于 QString 类有几个小点需要清楚:

QString 类存储的字符串默认是 Unicode
比如有如下代码,str 变量里面存储的数据是 Unicode 的编码格式,接收方如果解析成乱码,你就要想想两方的编码格式是不是都是 Unicode。如果不是的话,就需要用 QTextCodec 类来转码操作了。

QString str = "你好";
来自 char* 的数据 - 默认被当作 UTF-8 编码格式
最常用的就是传入一个 const char*,例如下列代码。根据“超越 C++ 的 Qt 翻译”中的“用 QString 包裹不需要翻译的文本”所述,Qt 默认将来自 char* 的字符串视为 UTF-8 编码格式,因此下列代码会在内部调用 fromUtf8() 函数来进行 char* -> QString 的转换。

QString str = "hello";
用 QChar 构建的 QString - 会进行深拷贝
因为 Unicode 编码格式是双字节存储一个字,所以 QString 类里面存储着一个个的 16-bit QChar 字符,每个 QChar 字符对应着一个 Unicode 4.0 字符。如果字符的编码大于65536时,用两个 QChar 存储这个字符。例如:

static const QChar data[4] = {0x0055, 0x006e, 0x10e3, 0x03a3};
QString str(data,4);
用 QChar 数组来构建 QString 是采用深拷贝的方式,意思就是说 QString 会完完全全复制一份 QChar 的数据。

提高性能的几个操作
(1)QString 复制 QChar 的数据时会进行深拷贝,意味着增加系统开销。如果不想这样,可以使用 fromRawData() 函数。

(2)可以使用 resize() 函数来设定好 QString 的容量并初始化每个值。因为 QString 类可以像 C++ 数组一样用 operator[]() 访问,所以对每个值初始化可以这样做:

QString str;
str.resize(4);
str[0] = QChar('U');
str[1] = QChar('n');
str[2] = QChar(0x10e3);
str[3] = QChar(0x03a3);
为什么要预分配内存?因为 str 变量运行时可能会在结尾插入一些字符串,这时候系统会调用内存分配器来进行重新规划,自然就增加了系统开销。类似的函数还有一个 reserve()。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
嵩山少侠来了

2021-04-07 · TA获得超过2.5万个赞
知道大有可为答主
回答量:1.2万
采纳率:0%
帮助的人:376万
展开全部
一个QString类型字符串,如何去掉其中的某一特定字符,比如“\n”?数字应该比较容易,中文的话也是有编码范围的,例如在Unicode编码中好像为4e00~9fa5(不确定)。所以我想你只需要扫描每个字符,判断其编码是否在对应区间就可以了。一个QString类型字符串,如何去掉其中的某一特定字符,比如“\n”
有奖励写回答共3个回答
tcl203
TA获得超过364个赞
聊聊
关注
成为第3位粉丝
QString的以下成员函数可以用于删除某一特定字符:
QString &QString::remove(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive)
例如:
QString t = "A\nB\nC";
t.remove(QChar('\n'), Qt::CaseInsensitive);
// 结果为:t == "ABC"
也可以使用QString的replace成员函数将某一特定字符替换为空字符来实现删除的效果。
关于QString的remove和replace成员函数都有多个重载,适用于不同的入参。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-12-04
展开全部
数字应该比较容易,中文的话也是有编码范围的,例如在Unicode编码中好像为4e00~9fa5(不确定)。所以我想你只需要扫描每个字符,判断其编码是否在对应区间就可以了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
翔1328559904
2018-07-11
知道答主
回答量:17
采纳率:0%
帮助的人:9.5万
展开全部
q_str.remove("\n");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式