在qt c++中替换编码字符串的“=”
replacing "=" of encoded string in qt c++
我有一个使用 base64 编码的文本
例如我有一个字符串
string = "Hello"
编码为
Encoded string is :"SGVsbG9XQ1Q="
然后在字符串前加上“||” (2 管道字符)
现在的问题是我想用 |
(一个管道)替换该编码字符串中的所有 =
,仅在字符串的末尾而不是在任何字符串的中间
如何在 qt c++ 中将字符串末尾的所有 =
替换为 |
?
这是我的代码:
#include <QCoreApplication>
#include <QString>
#include <QDebug>
#include <QByteArray>
QString base64_encode(QString string);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString srcString = "HelloWCT";
QString encodedString = base64_encode(srcString);
qDebug() << "Encoded string is" << encodedString;
return a.exec();
}
QString base64_encode(QString string){
QByteArray ba;
ba = ba.append(string);
ba = ba.toBase64();
ba = ba.prepend("||");
return(ba);
}
如何仅在字符串末尾应用我的替换逻辑?有人可以帮我解决逻辑问题吗?
我有逻辑但不知道如何应用它?
逻辑是:它会从字符串的末尾开始检查,如果有“=”,它会用“|”替换它它将检查在最后一个等于之前是否存在另一个“=”,它将再次替换,然后如果在第二个“=”之前存在另一个字符,它将停止替换我们如何才能做到这一点?
您可以从头到尾循环遍历 QByteArray
(并在找到 '='
以外的字符时中断循环),将每个出现的 '='
替换为一个 '|'
,像这样:
QByteArray ba("SGVsbG9XQ1Q=");
for(int i=ba.length()-1; i>=0 && ba[i]=='='; i--)
ba[i] = '|';
我找到了确切的解决方案:
for(int i=ba.length()-1; i>=0 ;i--)
if(ba.at(i) == '=')
{
//replace with "|"
ba.replace(i,1,QByteArray("|"));
}
else
break;
我有一个使用 base64 编码的文本 例如我有一个字符串
string = "Hello"
编码为
Encoded string is :"SGVsbG9XQ1Q="
然后在字符串前加上“||” (2 管道字符)
现在的问题是我想用 |
(一个管道)替换该编码字符串中的所有 =
,仅在字符串的末尾而不是在任何字符串的中间
如何在 qt c++ 中将字符串末尾的所有 =
替换为 |
?
这是我的代码:
#include <QCoreApplication>
#include <QString>
#include <QDebug>
#include <QByteArray>
QString base64_encode(QString string);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString srcString = "HelloWCT";
QString encodedString = base64_encode(srcString);
qDebug() << "Encoded string is" << encodedString;
return a.exec();
}
QString base64_encode(QString string){
QByteArray ba;
ba = ba.append(string);
ba = ba.toBase64();
ba = ba.prepend("||");
return(ba);
}
如何仅在字符串末尾应用我的替换逻辑?有人可以帮我解决逻辑问题吗?
我有逻辑但不知道如何应用它?
逻辑是:它会从字符串的末尾开始检查,如果有“=”,它会用“|”替换它它将检查在最后一个等于之前是否存在另一个“=”,它将再次替换,然后如果在第二个“=”之前存在另一个字符,它将停止替换我们如何才能做到这一点?
您可以从头到尾循环遍历 QByteArray
(并在找到 '='
以外的字符时中断循环),将每个出现的 '='
替换为一个 '|'
,像这样:
QByteArray ba("SGVsbG9XQ1Q=");
for(int i=ba.length()-1; i>=0 && ba[i]=='='; i--)
ba[i] = '|';
我找到了确切的解决方案:
for(int i=ba.length()-1; i>=0 ;i--)
if(ba.at(i) == '=')
{
//replace with "|"
ba.replace(i,1,QByteArray("|"));
}
else
break;