NSString isEqualToString: pour \n
J'ai un Cacao application qui appelle un service web. Quand je lis la réponse du service web, j'obtiens un \n comme le dernier caractère dans mon foundCharacters délégué pour la NSXMLParser pour chaque élément dans le fichier XML.
Quand j'essaie de faire ce qui suit:
if (![string isEqualToString:@"\n"])
Le chèque sera toujours ne parvient pas à attraper le retour à la ligne. Quelqu'un connait un bon moyen de chaîne de vérifier un retour à la ligne?
Je trouve aussi bizarre que chaque élément aurait un retour à la ligne à la fin de chaque valeur, même si je ne vois aucune preuve de ce que dans la sortie du service web.
C'est tout à fait le problème pour quelque chose qui devrait être très facile à faire.
Oui merci, je l'ai changé dans la question.
OriginalL'auteur Scott Lance | 2009-10-03
Vous devez vous connecter pour publier un commentaire.
Je pense que c'est tout ce dont vous avez besoin?
text = [texte stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
Scott Lance: Lire ma réponse. Il explique pourquoi son
isEqualToString:
message n'a pas fonctionné comme il l'avait prévu.OriginalL'auteur phunehehe
Que le message n'retour
YES
sistring
est un caractère de long et que le personnage est\n
.Si vous voulez tester si une chaîne de se termine avec
\n
, alors vous devez utiliserhasSuffix:
:Si vous voulez bande
\n
à partir de la fin de la chaîne et d'utiliser ce qui reste, phunehehe la solution est la bonne.Edit: Dans Jeremy W. Sherman réponse, il souligne le service web peut vous donner CRLF terminée par le texte. C'est un point valide, et vous ne devriez pas seulement regarder pour
\n
à la fin de la ligne, mais également une pleine\r\n
séquence. Le code qu'il présente est une façon de le faire. Cependant vous le faites, vous avez encore besoin de supprimer la totalité de séparateur de ligne, même si c'est un\r\n
séquence.OriginalL'auteur Peter Hosey
Le service web est probablement la résiliation de toutes les lignes avec
CRLF
, c'est à dire,"\r\n"
. Vous êtes sur un système UNIX, de sorte que le caractère de saut de ligne'\n'
est pris comme le séparateur de ligne de; le retour chariot'\r'
est laissé à la ligne précédente. Lors de l'impression, il aura le même effet que'\n'
. Avez-vous vérifié (à l'aide, dire,strvis
) que la ligne de finale de caractère est'\n'
et pas'\r'
?-[NSString hasSuffix:]
ne fonctionnera que pour les spécifiques caractère de saut de ligne vous fournir. Pour tester si la chaîne se termine par un saut de ligne ou un espace, ici, c'est un putatif de la catégorie de méthode:Vous pouvez utiliser phunehehe la suggestion de
text = [text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]
pour supprimer une ligne-finale des espaces ou des retours à la ligne.OriginalL'auteur Jeremy W. Sherman