Qt / Как удалить целую строку из строки?

я использую 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");

Но я не хочу удалять все пустые строки, только те, для которых я удалил их содержимое, так как это разрушит весь формат моего документа.

0

Решение

Попробуй это:

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Вы можете избежать этого дополнительного кода.

1

Другие решения


По вопросам рекламы [email protected]