Apostroph ohne vorangestelltes \

77

Ich habe eine Zeichenfolge in einer Android-Anwendung definiert:

<string name="search_occurs">'{string}' occurs {times}</string>

Dies gibt den Fehler: Apostroph ohne vorangestelltes \ (in '{string}' tritt {times} auf)

Ich habe eine Reihe von Dingen versucht, um dies zu beheben:

<string name="search_occurs">\'{string}\' occurs {times}</string>
<string name="search_occurs">&apos;{string}&apos; occurs {times}</string>
<string name="search_occurs"><![CDATA['{string}' occurs {times}]]></string>
<string name="search_occurs"><![CDATA[\'{string}\' occurs {times}]]></string>

Ich kann den Fehler nicht beseitigen. Was vermisse ich?

Frank Schnabel
quelle
6
\'funktioniert bei mir. Ich habe es gerade in Eclipse versucht.
CommonsWare
4
Nachdem ich vor dem Apostroph einen Backslash hinzugefügt hatte, wurde es notwendig Clean, das gesamte Projekt neu zu erstellen, damit Eclipse sich nicht mehr über den Fehler beschwert.
Stan

Antworten:

94

Diese sollten beide gemäß http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling funktionieren :

<string name="search_occurs">\'{string}\' occurs {times}</string>
<string name="search_occurs">"'{string}' occurs {times}"</string>
John Boker
quelle
Der erste hat bei mir funktioniert, der zweite nicht getestet. Großartige Arbeit
VVB
2
beide sollten, und in beiden Fällen schneidet Android Studio Anführungszeichen und Backslash vor dem Erstellen, außerdem konvertiert es \ u0027 in einfache Anführungszeichen und zeigt dann Fehler an.
El '13.
46

füge einfach \ vor 'in deinen String ein. Es ist FALSCH. Es ist WAHR :)

Echter Hyder
quelle
Gibt es eine sauberere Möglichkeit, dies zu tun? Ich lokalisiere meine App auf Französisch und mein Zeichenfolgenordner enthält viel Text. Es ist also offensichtlich nicht die beste Idee, den gesamten Text durchzugehen und einen Backslash hinzuzufügen.
The_Martian
Nein, das ist der einzige Weg.
1рум Илиев
@The_Martian Ich habe das gleiche Problem. Hast du einen anderen Weg als den vorgeschlagenen gefunden?
Niemand
3

Warum geben Sie 'den String nicht an, durch den Sie ihn ersetzen?

Kennen Sie auch solche Konstrukte?

<string name="profile_age_range_text_between">between %1$d and %2$d</string>
<string name="unit_height_inches">%1$d\'%2$d ft</string>
<string name="unit_distance_miles">%s mi</string>
WarrenFaith
quelle
2

Ersetzen Sie Ihren Apostroph ( ' ) durch ( \' ) oder fügen Sie \ vor jedem (') hinzu

Hinweis: Nur in () Text kopieren

Sai Gopi ich
quelle
2

Stellen Sie sicher, dass Sie die richtige Datei bearbeiten. Wie in dieser Antwort angegeben , öffnet Android Studio bei Auftreten des Fehlers eine values.xmlDatei, die Ihrer Originaldatei ähnelt. Sie müssen das \in der Originaldatei hinzufügen strings.xml(oder wo immer das beleidigende Zeichen ist). Andernfalls wird der Fehler immer wieder wiederholt.

Suragch
quelle
0

Als Antwort auf https://stackoverflow.com/users/3339394/the-martian Es gibt eine allgemeine Lösung zum Ersetzen von 'durch \'. Sie müssen den Text in einen Texteditor (wie Notepad ++) kopieren und dann das " Ersetzen "Option im Programm Ersetzen Sie ganze 's durch \'. (Weil ich nicht genug Ruf habe, musste ich es in einer Antwort schreiben, sorry!)

Farhad
quelle
0

Dieser Fehler wird durch ein in String verwendetes Apostroph verursacht

Ersetzen Sie Apostroph durch \ 'Das ist alles

Muhammad Farooq Arshad
quelle
-1

Ich habe die Lösung basierend auf meinem Szenario erhalten.

  1. Wählen Sie Ihre Datei string.xml aus
  2. Klicken Sie mit der rechten Maustaste und öffnen Sie die Show im Explorer
  3. Bearbeiten Sie die Zeile aus der Datei string.xml und speichern Sie den Code.
  4. Öffnen Sie Android Studio erneut und aktualisieren Sie die Lösung.

Jetzt wird der Code ausgeführt.

Hinweis: Ich habe den Fehler bei der Verwendung von Apostrophe on nicht erhalten . Also wechsle ich zu Cannot . Jetzt wird mein Szenario funktionieren.

Sudharsan Chandrasekaran
quelle