Est-ce que quelqu'un connaît un moyen facile d'ajouter une seule barre oblique inverse ( Je suis capable d'obtenir une double barre oblique inverse ou pas de barre oblique inverse, mais incapable d'obtenir une seule barre oblique inverse. Toute aide serait appréciée. Merci p> \ code>) à un
nstring code> dans objectif-c? J'essaie d'avoir un
nstring * temp = @ "\ / date (100034234) \ /" code>; p>
5 Réponses :
la chaîne @ "\\" code> est une seule barre oblique inverse,
@ "\\\\" code> est une double barre-backslash p>
En es-tu sûr? Lorsque j'imprime le nstring à l'aide de NSLog, il apparaît comme une double barre oblique inverse.
Utiliser NSLog (String) est une mauvaise pratique; Toutes une personne doit faire pour cracer votre système est passée par ex. % D, et il sera interprété comme une déréférence pour une valeur. Si vous souhaitez imprimer la valeur d'un nstring seul, vous devez utiliser: NSLog (@ "@%", String) Depuis lors, aucune valeur dans la "chaîne" affectera la sortie résultante, qui est un type d'objet. .
Ceci est un bogue dans NSLOG. J'ai trouvé une archive de liste de diffusion avec un message daté en 2002 de quelqu'un qui a déposé un bogue pour cette ici . La personne a également dit ceci: p>
Rien n'a été fait aussi loin que je peux dire. Je ne comprends pas comment ils l'ont fait, mais l'évasion fonctionne pour la chaîne, tout simplement pas pour Nslog. P> blockQuote>
Donc, je suppose que vous devrez proposer votre propre implémentation d'un message de journal si vous voulez vraiment les backslashes. P>
Y a-t-il une autre façon d'être sûr de cela? En outre, connaissez-vous une autre façon de représenter un seul caractère littéral littéral et l'annuler à une chaîne?
Pouvez-vous faire quelque chose comme nsstring * string = @ "\\"; Nslog (@ "% @", chaîne); code>
Il n'y a rien de mal avec Nslog. Il s'agit de sa chaîne qui contient quatre backslashes, probablement placées par un code qui remplace une barre oblique inverse avec deux. Quand il les imprime, il ressemble à 2, car il y en a quatre.
Les cordes et les nslog fonctionnent bien pour moi (iPhone SDK 3.1.2 et XCode 3.2.1):
NSLog(@"\\"); // output is one backslash NSLog(@"\\\\"); // output is two backslashes NSLog(@"\\/Date(100034234)\\/"); // output is \/Date(100034234)\/
Ce code fait em> donne la sortie demandée: Cependant, j'ai eu un problème avec ma boîte à outils JSON (SBJSON) qui a remplacé toutes les occurrences de "\\" avec "\\\\", qui a causé des problèmes comme décrit dans les autres réponses et les commentaires. P> Le résultat était une chaîne ressemblant à: p> voir ma réponse ici p> La solution utilisait: p>
Jusqu'à présent, je m'attends toujours à ce que tout fonctionne bien. Je n'ai pas encore vu un exemple de non-travail qui n'est pas buggy lui-même.
Ben - Pour les cordes prédéfinies, ils devraient être (cela aurait un sens). Mais dans de nombreux cas, lorsque ces questions se produisent, elles ne sont pas destinées à être utilisées uniquement pour des chaînes prédéfinies. C'était il y a longtemps qu'il y a longtemps, mes souvenirs sont vagues, mais je suppose que dans mon cas, exécutez des chaînes de données inconnues à l'époque de la compilation via JSON gâchée les résultats.
où vous voulez un \ ajouter ou supprimer. Juste \\ sur cet endroit. p>