2012-05-14 16 views
69

Devo essere in grado di inserire un "-" nella stringa all'interno del mio file strings.xml.Come inserire un "-" nel file string.xml

Il mio problema è che quando sto mettendo la mia stringa che è "1261eba2-9d8c-11e1-93e3-40409e0f44a1", eclissi urla:

annotazioni multiple trovati a questa linea: - Sostituire "-" con un carattere "trattino" (-, &; # 8211;)

Come posso risolvere questo problema?

+1

dove esattamente hai bisogno di quel valore? È un tag, un valore di tag o un valore di attributo? – rekaszeru

+0

Mostra il tag – Bhavin

+0

Ciondolo criptico Lint – auval

risposta

102

Quindi, quando si legge il messaggio di errore, la risposta sarà che è necessario sostituire - con –. Quindi dovrebbe funzionare bene =)

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

+2

Questo è OK quando vuoi solo mostrare la stringa all'utente. L'utente non può davvero dire che stai "barando" con un personaggio unicode simile alla vista. Se si desidera utilizzare il trattino normale, vedere questa risposta: http://stackoverflow.com/a/10895509/78234 –

+1

Penso che il codice sia per endash, non un trattino normale. – John61590

14

Usa barra indietro (\) davanti a ogni carattere speciale. come me \ & android.

Questo carattere di escape chiamato. (\)

+0

Penso che tu intenda aggiungere il carattere di escape: "\" prima di ogni carattere speciale. – drew212

+0

http://en.wikipedia.org/wiki/Escape_character escape character is backslash - "\" not forward slash - "/" – drew212

+0

@ drew212, un suo errore, grazie per avermi corretto .. –

1

Probabilmente hanno questo:

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

Ma è necessario uno di questi:

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

Nel secondo il - è sostituito da un -. È difficile distinguere visivamente la differenza.

+1

Attenzione però: se cambi questi simboli in un URL potrebbe smettere di funzionare (il mio ha fatto). –

+0

Desidero sostituire un simbolo di trattino corto (n-trattino) con una sequenza di escape. Ma '–' sembra la sua sequenza di escape per il simbolo del trattino lungo (m-dash). – toobsco42

75

Le altre risposte sono corrette per quando si desidera visualizzare la stringa all'utente. L'utente non può realmente capire la differenza tra un trattino "reale" e l'inganno unicode.
Ma, se proprio deve avere il trattino (ad esempio perché la stringa viene utilizzata come una password da qualche parte, o come chiave URL per un'API), allora si può semplicemente utilizzare questo formato:

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

l'avviso essere rimosso e la stringa può essere letta utilizzando il normale:

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

questa è la migliore risposta. Grazie. –

+3

più facile, più elegante, supporta il codice di google analytics. –

+9

Un consiglio: potresti voler mettere gli strumenti: ignore = "TypographyDashes" parte solo in quei tag che hanno davvero bisogno del vero trattino. –

2

Il trattino è un segno di punteggiatura che è simile a un trattino o segno meno, ma si differenzia da entrambi questi simboli principalmente in lunghezza e funzione. Le versioni più comuni del trattino sono il trattino (-) e il trattino (-), che si chiamano rispettivamente per la lunghezza della lettera maiuscola n e della lettera maiuscola M.

Reference

Basta sostituire - con perché quando si digita un trattino sulla tastiera, XML legge trattino come meno, questo è tutto.

Problemi correlati