я использую QString::remove(QString)
удалить определенную строку из строки, но есть небольшая проблема, которая заключается в том, что удаленная строка на самом деле не удаляется, вместо этого она заменяется пустой строкой. Я хочу полностью удалить всю строку.
Исходная строка:
...
Hi there,
Alaa Joseph is here!
The above line is going to be removed :P
It's the magic of C++ :]
...
Вот что я попробовал:
test1 = originalString.replace("Alaa Joseph is here!", "");
test2 = originalString.remove("Alaa Joseph is here!"); // Same result as the previous
Выход:
...
Hi there,
The above line is going to be removed :P
It's the magic of C++ :]
...
Как вы видите выше, он удалил текст, не удаляя всю строку!
Мне нужно, чтобы вывод был таким:
...
Hi there,
The above line is going to be removed :P
It's the magic of C++ :]
...
Я знаю, что я мог бы просто перебрать каждую строку & сделай это:
QStringList list = test1.split("\n");
list.removeAt(0);
int n = list.length();
list.removeAt(n - 1);
QString noEmptyLines = list.join("\n");
Но я не хочу удалять все пустые строки, только те, для которых я удалил их содержимое, так как это разрушит весь формат моего документа.
Попробуй это:
test2 = originalString.remove("Alaa Joseph is here!\n");
Это должно удалить \n
тоже, и вы получите правильный вывод.
Если у вашей задачи есть какая-то спецификация, вы можете проверить, что делать. Например:
if(originalString.contains("Alaa Joseph is here!\n") )
test2 = originalString.remove("Alaa Joseph is here!\n");
else
if(originalString.contains("Alaa Joseph is here!"))
test2 = originalString.remove("Alaa Joseph is here!");
Если вы уверены, что \n
всегда в вашем string
Вы можете избежать этого дополнительного кода.