У меня есть текст, который который кодируется с помощью base64 Например, у меня есть строказамена «=» по закодированной строки в Qt C++
string = "Hello"
Это кодируется
Encoded string is :"SGVsbG9XQ1Q="
, а затем перед именем строка с "||" (2-Pipe Character)
проблема Теперь я хочу, чтобы заменить все =
в этой закодированной строки с |
(одна труба), только в конце строки не в середине любой строки
Как я заменю все =
только в конце строки с |
в 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);
}
Как применить мою заменяющую логику только в конце строки может кто-нибудь помочь мне с логикой?
У меня есть логика, но я не знаю, как ее применять?
Логика: она начнет проверку с конца строки, если есть «=», она заменит ее на «|» и он проверяет, существует ли еще один «=» до того, как последний равный ему снова будет заменен, а затем, если перед вторым «=», если есть другой символ, он перестанет заменять, как мы можем это сделать?
вы ищете что-то вроде 'если (ba.endsWith ('=')) ба [ba.length() - 1] = '|'; '? – Mike
@Mike да что-то вроде этого, но то, что я хочу, это когда он находит любого другого персонажа, то «=» он должен прекратить его заменять? Можно ли это сделать с помощью вышеописанного метода. Acoording me if (ba.endsWith ('=')) ba [ba.length() - 1] = '|'; заменит последнее «=», если у меня есть еще один «=» в конце строки? будет ли это работать? Я добавил свою логику выше? но не знаете, как это сделать? – cyley