2014-10-28 6 views
0

문자열에서 특정 줄을 제거하기 위해 QString::remove(QString)을 사용하고 있지만, 제거 된 문자열이 실제로 제거되지 않는다는 작은 문제가 있습니다. 대신 빈 문자열로 대체됩니다. 전체 줄을 완전히 제거하고 싶습니다.Qt/C++ - 문자열에서 전체 줄을 제거하는 방법?

원래 문자열 : 여기

... 
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을 삭제해야합니다 그리고 당신은 올바른 출력을 얻을 것이다 :

+0

"전체 줄을 제거하지 않고 텍스트를 제거했습니다!" 아니. 줄의 일부인 캐리지 리턴까지 줄의 텍스트를 제거했습니다. "\ n"은 문자 그 자체입니다. – BaCaRoZzo

답변

1

이보십시오.

작업에 일부 사양이있는 경우 수행해야 할 작업을 확인할 수 있습니다. 예를 들면 : 당신이 \nstring 항상 확인하는 경우

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!"); 

, 당신이 추가 코드를 방지 할 수 있습니다.

관련 문제