2012-05-14 8 views
69

Ich brauche ein setzen zu können „-“ in der Zeichenfolge in meiner strings.xml Datei.So platzieren Sie eine „-“ in string.xml Datei

Mein Problem ist, dass, wenn ich meinen String bin setzen die "1261eba2-9d8c-11e1-93e3-40409e0f44a1" ist, Finsternis schreit:

Mehrere Anmerkungen an dieser Linie gefunden: - Ersetzen Sie "-" mit einem "en dash" Zeichen (-, &; # 8211;)

Wie kann ich dieses Problem beheben?

+1

Wo genau brauchen Sie diesen Wert? Ist es ein Tag, ein Tag-Wert oder ein Attributwert? – rekaszeru

+0

Anzeige des Tags – Bhavin

+0

Flicken kryptischen Charme – auval

Antwort

102

Also, wenn Sie die Fehlermeldung lesen, wird Ihre Antwort sein, dass Sie - durch – ersetzen müssen. Dann sollte es funktionieren =)

http://en.wikipedia.org/wiki/Dash

+2

Dies ist OK, wenn Sie die Zeichenfolge nur dem Benutzer anzeigen möchten. Der Benutzer kann nicht wirklich sagen, dass Sie mit einem ähnlich aussehenden Unicode-Charakter "betrügen". Wenn Sie nur den regulären Strich verwenden möchten, finden Sie in dieser Antwort: http://StackOverflow.com/A/10895509/78234 –

+1

Ich denke, dass Code für Endash ist, kein normaler Bindestrich. – John61590

14

Verwendung slash zurück (\) vor jedem Sonderzeichen. wie ich \ & android.

Diese Escape-Zeichen genannt. (\)

+0

Ich denke, Sie meinen, fügen Sie das Escape-Zeichen: "\" vor jedem Sonderzeichen. – drew212

+0

http://en.wikipedia.org/wiki/Escape_character Escape-Zeichen ist Backslash - "\" nicht Schrägstrich - "/" – drew212

+0

@ drew212, sein Fehler, danke für die Korrektur .. –

1

du wahrscheinlich:

<string name="test1">1261eba2-9d8c-11e1-93e3-40409e0f44a1</string> 

Aber Sie müssen entweder einer der folgenden:

<string name="test2">1261eba2&#8211;9d8c&#8211;11e1&#8211;93e3&#8211;40409e0f44a1</string> 
<string name="test3">1261eba2–9d8c–11e1–93e3–40409e0f44a1</string> 

Im zweiten der - ist ersetzt durch ein -. Es ist schwer, den Unterschied visuell zu erkennen.

+1

Sei aber vorsichtig: Wenn du diese Symbole in einer URL änderst, könnte es nicht mehr funktionieren (meins). –

+0

Ich möchte ein kurzes Bindestrichsymbol (n-Gedankenstrich) durch eine Escape-Sequenz ersetzen. Aber '–' sieht aus wie die Escape-Sequenz für das lange Bindestrich-Symbol (m-Strich). – toobsco42

75

Die anderen Antworten sind OK, wenn Sie die Zeichenfolge für den Benutzer angezeigt werden sollen. Der Benutzer kann den Unterschied zwischen einem "echten" Strich und der Unicode-Trickerei nicht wirklich unterscheiden.
Aber, wenn Sie wirklich den Strich haben müssen (zB weil diese Zeichenfolge als Kennwort irgendwo verwendet wird, oder als URL-Schlüssel für eine API), dann können Sie nur dieses Format verwenden:

<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="TypographyDashes"> 
    <string name="EVA_API_KEY">3c42b725-5e20-41c8-982f-dee40be8a05b</string> 
</resources> 

Die Warnung wird mit dem regulären entfernt werden und kann die Zeichenfolge gelesen werden:

getResources().getString(R.string.EVA_API_KEY); 
+3

das ist die beste Antwort. Vielen Dank. –

+3

einfacher, eleganter, Google Analytics-Code unterstützen. –

+9

Ein Tipp: Sie könnten die Tools setzen: ignore = "TypographyDashes" Teil in nur diese Tags, die wirklich den echten Strich brauchen. –

2

Der Bindestrich ist ein Satzzeichen, die mit einem Bindestrich oder Minuszeichen ähnlich, unterscheidet sich aber von diesen beiden Symbole in erster Linie in Länge und Funktion. Die gebräuchlichsten Versionen des Gedankenstrichs sind der Bindestrich (-) und der Bindestrich (-), benannt nach der Länge des Kleinbuchstabens n bzw. des Großbuchstabens M einer Schriftart.

Reference

Gerade - mit ersetzen, weil, wenn Sie einen Strich auf der Tastatur eingeben, XML liest Strich als minus, das ist alles.

Verwandte Themen