2013-03-29 5 views
0

이 경우입니다. Text 속성 인 ToolStripItem으로 작업해야하며 그 전에 문자열에서 모든 공백을 지울 필요가 있습니다. 그러나 세 가지 매우 일반적인 (내 의견으로는) 시나리오를 시도하고 둘 다 공백없이 문자열을 반환했습니다. 여기에 내가 뭘하려 :가장 일반적인 방법으로 공백을 지울 수없는 경우

string tempBtnText = tempItem.Text; 

tempBtnText은 내가 Text 속성과 작동 방법 내에서 정의된다. 나는이 방법을 더 쉽게 찾는다. 그런 다음 시도해 보았습니다.

tempBtnText.Replace(" ", String.Empty); 
tempBtnText = Regex.Replace(tempItem.Text, @"^\s*$\n", string.Empty); 
string tempBtnTexts = Regex.Replace(tempItem.Text, @"\s+", ""); 

모든 사람이 원래 형식 (공백 포함)으로 문자열을 반환했습니다. 흰색 공백을 제거 할 수있는 유일한 방법은이 방법을 사용하여이었다

public string RemoveWhitespace(string input) 
{ 
    return new string(input.ToCharArray() 
     .Where(c => !Char.IsWhiteSpace(c)) 
     .ToArray()); 
} 

내가 SO 여기에 유사한 게시물을 발견한다. 하지만 위의 모든 접근 방식이 효과가없는 이유를 이해하지 못합니다. 나는 내가 ToolStripItem 텍스트 속성을 사용하고 있다는 사실과 관련이 있다고 생각하기 시작했다. 그러나 시작 부분에 표시된대로 Text 속성 값을 취하는 자체 문자열 변수를 선언했다.

잘 모르겠습니다. 누군가가 저에게 말할 수 있습니까?이 행동의 이유는 무엇입니까? 공백을 없애기 위해 또 다른 방법을 사용하는 것이 큰 문제는 아니지만 작업 옵션이 훨씬 더 간결하고 읽기 쉽고 가능하다면 그 중 하나를 사용하고 싶습니다.

string input = "..."; 
intput = intput.Replace(x, y); 
+3

주 ...'tempBtnText = tempBtnText.Replace(); ' – Rob

+0

믿을 테스트 케이스 ('textBtnText'의 예제 값)를 보시려면 여기를 클릭하십시오. –

답변

5

Strings are immutable, 어떻게 당신이 입력에 다시 어떤 방법 결과를 할당 할 필요가 있도록 모든 작업은, 새로운 인스턴스를 생성하는 것을 의미한다 다음과 같아야합니다 :

tempBtnText = tempBtnText.Replace(" ", String.Empty); 

문자열은입니다., string.Replace은 새 문자열을 반환하지만 기존 문자열은 수정하지 않습니다.

+0

정말 고쳐 주셔서 고맙습니다. 그러나이 문제를 해결하기 위해'RegEx' 예제에서 결과를 할당하고 있습니다. 이 사건에 대한 어떤 생각? – Leron

2

당신은 tempBtnText

tempBtnText.Replace(" ", String.Empty); 

결과를 다시 할당되지 않습니다

1

abatischev 바로 그래서 당신의 문제를 해결해야

tempBtnText = tempBtnText.Replace(" ", String.Empty); 

을 쓰고있다. 당신은 다시 앞에 이때 공백을 제거하고 싶은 경우 오히려 사용 : 첫 번째 조건에 당신이 결과를 복용하지 않는 것이

tempBtnText = tempBtnText.Trim(); 
관련 문제