Fix tag string parsing

This commit is contained in:
Rasmus Karlsson 2018-06-05 16:29:06 +02:00
parent 5c8e736518
commit d584852bc0

View file

@ -10,48 +10,43 @@ inline QString parseTagString(const QString &input)
QString output = input; QString output = input;
output.detach(); output.detach();
bool changed = false; auto length = output.length();
for (int i = 0; i < output.length() - 1; i++) { for (int i = 0; i < length - 1; i++) {
if (output[i] == '\\') { if (output[i] == '\\') {
QChar c = output[i + 1]; QChar c = output[i + 1];
switch (c.cell()) { switch (c.cell()) {
case 'n': { case 'n': {
output[i] = '\n'; output.replace(i, 2, '\n');
} break; } break;
case 'r': { case 'r': {
output[i] = '\r'; output.replace(i, 2, '\r');
} break; } break;
case 's': { case 's': {
output[i] = ' '; output.replace(i, 2, ' ');
} break; } break;
case '\\': { case '\\': {
output[i] = '\\'; output.replace(i, 2, '\\');
} break; } break;
case ':': { case ':': {
output[i] = ';'; output.replace(i, 2, ';');
} break; } break;
default: { default: {
output[i] = output[i + 1]; output.remove(i, 1);
} break; } break;
} }
output[i + 1] = '\0';
changed = true;
i++; i++;
length--;
} }
} }
if (changed) {
return output.replace("\0", "");
}
return output; return output;
} }