문제

웹 서비스를 호출하는 Cocoa 앱이 있습니다.웹 서비스의 응답을 구문 분석할 때 XML의 각 요소에 대한 NSXMLParser에 대한foundCharacters 위임의 마지막 문자로 을 얻습니다.

다음을 수행하려고 할 때:

if (![string isEqualToString:@"\n"])

검사는 항상 개행 문자를 포착하지 못합니다.줄 바꿈 문자열을 검사하는 좋은 방법을 아는 사람이 있나요?

또한 웹 서비스의 출력에서 ​​그에 대한 증거를 볼 수 없음에도 불구하고 각 요소마다 각 값 끝에 개행 문자가 있다는 것이 이상하다는 것을 알았습니다.

이는 유난히 쉬워야 하는 일에 있어서 상당히 문제가 됩니다.

도움이 되었습니까?

해결책

나는 이것이 당신이 필요로하는 것 같아요?
text = [text stringbytrimmingcharactersinset : [nscharacterset ghitespaceandnewlinecharacterset]];

다른 팁

웹 서비스에서 응답을 구문 분석 할 때 마지막 캐릭터로서 a n을 받고 있습니다…

다음을 시도 할 때 :

if (![string isEqualToString:@"\n"])

수표는 항상 Newline을 잡지 못할 것입니다.

그 메시지는 다시 돌아올 것입니다 YES 만약에 string 하나의 캐릭터가 길고 그 캐릭터는입니다 \n.

문자열 여부를 테스트하려는 경우 로 끝나다 \n, 그런 다음 사용해야합니다 hasSuffix::

if (![string hasSuffix:@"\n"])

당신이 원한다면 조각 \n 문자열의 끝에서 남은 것을 사용하면 Phunehehe의 솔루션이 올바른 것입니다.

편집하다: Jeremy W. Sherman의 답변에서 그는 웹 서비스가 CRLF에 대한 텍스트를 제공 할 수 있다고 지적합니다. 이것은 유효한 지점이며, 당신은 \n 결국 라인이 있지만 전체를 확인하십시오. \r\n 순서. 그가 제시하는 코드는 그렇게하는 한 가지 방법입니다. 그러나 당신은 그것을합니다. \r\n 순서.

웹 서비스가 다음으로 모든 회선을 종료할 가능성이 높습니다. CRLF, 즉., "\r\n".UNIX 시스템을 사용 중이므로 줄바꿈 문자가 '\n' 줄 구분 기호로 사용됩니다.캐리지 리턴 '\r' 이전 줄의 일부로 남아 있습니다.인쇄하면 다음과 같은 효과가 나타납니다. '\n'.(예를 들어, strvis) 줄 끝 문자는 '\n' 그리고는 아니다 '\r'?

-[NSString hasSuffix:] 제공한 특정 개행 문자만 포착합니다.문자열이 개행 또는 공백으로 끝나는지 테스트하려면 다음과 같은 추정 카테고리 방법이 있습니다.

- (BOOL)my_hasWhitespaceOrNewlineSuffix {
  NSRange r = [self rangeOfCharacterFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]
                                    options:NSBackwardsSearch];
  BOOL foundChar = r.location != NSNotFound;
  BOOL isLineFinal = foundChar && (r.location + r.length == [self length]);
  return isLineFinal;
}

phunehehe의 제안을 사용할 수 있습니다 text = [text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] 줄 끝의 공백이나 개행 문자를 제거합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top