2013-03-17 3 views
1

저는 아이폰 개발에 멍청한 사람이고 xcode에 관한 아주 이상한 문제가 있습니다. 어떤 이유로, 무작위로 내 문자열 끝에 후행 공백을 추가합니다. 내 초기 문자열 값은 XML에서 파싱 된 다음 문자열의 마지막 섹션을 가져 오려고 시도합니다. 이것은이 무작위 공백으로 인해 어려울 것으로 판명됩니다. 어떤 도움이라도 대단히 감사합니다.Xcode가 문자열의 끝에 공백을 추가하는 이유는 무엇입니까?

MY 코드

//initial String 
<title>March 15 2013 Metals Commentary: Thomas Vitiello</title> 

//Parsing 
NSString *name = [[stories objectAtIndex: storyIndex] objectForKey: @"title"]; 
NSLog(@"myname: %@ %i", name, name.length); 

//Log at this point 
myname: March 15 PM Metals Commentary: Thomas Vitiello 
     59 

//Attempt at Removing Whitespace 
NSArray *lastName=[name componentsSeparatedByString:@" "]; 
name = [[lastName objectAtIndex:6]stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
NSLog(@"myname: %@ %i", name, name.length); 

//Log at this point 
myname: Vitiello 
9 //<--Should be 8, not 9. This annoying whitespace is also particularly long, taking more than 1 character space, despite obviously being 1 character long. 
+5

새 줄도 제거하십시오. – nsgulliver

+0

또한 해당 초기 문자열은 어디서 오는가? XML 파일입니까? 원본 파일에서 인코딩이 올바른지 확인하십시오? XML이 유효합니까? – sosborn

+1

XML을 구문 분석 할 때 시작 태그와 종료 태그 사이의 모든 데이터 (공백, 탭 및 줄 바꿈 포함)를 얻을 수 있습니다. 귀하의 경우 길이가 별도의 줄에 인쇄된다는 사실에서 알 수 있듯이 줄 바꿈 문자가있는 것으로 보입니다. –

답변

3

당신은 문자열에서 또한 줄 바꿈을 제거 시도 할 수 있습니다. 문자열에는 공백뿐만 아니라 줄 바꾸기도 포함됩니다. 당신은 다음과 같이 설명 whiteSpaceCharacterSet, 사용하고

NSString *trimmmedContent = [contents stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
1

:

는 인라인 공백 문자 공간 (U + 0020) 및 탭을 포함하는 문자 집합을 반환합니다 (+ 0009 U) .

하지만 자신의 질문에 따르면 문자열에 개행 문자가있는 것 같습니다. 형식 문자열에 개행 문자가 없더라도 길이가 문자열과 다른 행에 어떻게 표시되는지 확인하십시오. 개행은 자르는 문자 중 하나가 아닙니다. 문제를 해결하려면 대신 whitespaceAndNewlineCharacterSet을 사용하십시오.

2

아마도 <title>March 15 2013 Metals Commentary: Thomas Vitiello</title>이 없습니다. 당신이 그것을 방지하기 위해 옵션을 사용하지 않으면

<title>March 15 2013 Metals Commentary: Thomas Vitiello 
</title> 

는, XML 파서는 태그 사이의 공백을 포함 일반적으로, 그래서 당신은 줄 바꿈을 후행 것을 얻을 : 더 많은 가능성이, 당신은.

관련 문제