QString类arg方法扩展

在使用QString的arg方法时,是一件很方便的事情,例如:

QString("%1,2%").arg("10").arg("20") //10,20

但是如果是下面的场景,对于这样场景我们期望得到的结果是:%2,20。

QString("%1,%2").arg("%2").arg("20") //20,20

 实际中肯定不会这么简单啦,因为arg()方法的参数在运行期间有可能是任何值,所以当含有%1,%2...等内容时产生的结果并不是我们所期望的,但是这类的问题又很难察觉到。

所以针对这种使用场景,封装了一个arg()方法,完美的避开了上面的问题

 

QStringEx.hpp

#ifndef QSTRINGEX_HPP
#define QSTRINGEX_HPP


#include <QString>

class QStringEx : public QString
{
public:
	QStringEx(const QString &strFormate): QString(strFormate){}

	QStringEx(){}

	template<typename ...Args>
	QStringEx& stringArg(Args... args)
	{
		return stringArg(1, args...);
	}

private:
	template<typename T, typename ...Args>
	QStringEx& stringArg(int nNumber, T arg, Args... args)
	{
		stringArg(nNumber + 1, args...);
		return stringReplace(nNumber, arg);
	}

	template<typename T>
	QStringEx& stringArg(int nNumber, T arg)
	{
		return stringReplace(nNumber, arg);
	}

	template<typename T>
	QStringEx& stringReplace(int nNumber, T arg)
	{
		QString strNumber = QString("%%1").arg(nNumber);
		int index = this->indexOf(strNumber);
		if (index != -1)
		{
			this->replace(index, strNumber.length(), QString("%1").arg(arg));
		}
		return *this;
	}


};
#endif //QSTRINGEX_H

 

使用:

QStringEx("%1,%2").stringArg("10", 20) //10,20
QStringEx("%1,%2").stringArg("%2", "20") //%2,20

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值