J'ai une chaîne lots\t of\nwhitespace\r\n
que j'ai simplifiée, mais je dois toujours supprimer les autres espaces de la chaîne.
QString str = " lots\t of\nwhitespace\r\n ";
str = str.simplified();
Je peux faire ceci erase_all(str, " ");
dans boost mais je veux rester dans qt.
str = str.simplified();
str.replace( " ", "" );
Le premier change tous vos caractères d'espaces en une seule instance de ASCII 32, le second supprime cela.
Essaye ça:
str.replace(" ","");
Option 1 :
Simplifiez l'espace blanc, puis supprimez-le
Par les docs
[
QString::simplified
] Renvoie une chaîne dont les espaces blancs sont supprimés au début et à la fin et chaque séquence d'espaces internes internes est remplacée par un seul espace.
Une fois la chaîne simplifiée, les espaces blancs peuvent facilement être supprimés.
str.simplified().remove(' ')
Option 2 :
Utilisez une QRegExp
pour capturer tous les types d'espaces dans remove
.
QRegExp space("\\s");
str.remove(space);
Notes
La chaîne OPs contient des espaces de différents types (tabulation, retour à la ligne, nouvelle ligne), qui doivent tous être supprimés. C'est la partie la plus délicate.
QString::remove
a été introduit dans Qt 5.6; Avant la suppression de 5.6, vous pouvez supprimer QString::replace
en remplaçant l'espace blanc par une chaîne vide ""
.
Vous pouvez ignorer l'appel à simplified()
avec une expression régulière:
str.replace(QRegularExpression("\\s+"), QString());
Je n'ai pas mesuré quelle méthode est la plus rapide. Je suppose que cette regex serait pire.