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

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

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


person Alaa Salah    schedule 28.10.2014    source источник
comment
Он удалил текст, не удаляя всю строку! НЕТ. Он удалил текст строки ДО возврата каретки, который является частью строки. \n — это сам символ.   -  person BaCaRoZzo    schedule 28.10.2014


Ответы (1)


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

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

person Kosovan    schedule 28.10.2014