Jak umieścić „-” w pliku string.xml

81

Muszę mieć możliwość wstawienia znaku „-” w ciągu znaków wewnątrz mojego strings.xmlpliku.

Mój problem polega na tym, że kiedy wkładam strunę, czyli "1261eba2-9d8c-11e1-93e3-40409e0f44a1"zaćmienie krzyczy:

W tym wierszu znaleziono wiele adnotacji: - Zastąp „-” znakiem „półpauza” (-, &; # 8211;)

Jak mogę to naprawić?

roiberg
źródło
1
gdzie dokładnie potrzebujesz tej wartości? Czy jest to tag, wartość tagu czy wartość atrybutu?
rekaszeru
2
zamień „-” na „\ -”
carmen_munich

Odpowiedzi:

119

Tak więc, kiedy czytasz ten komunikat o błędzie, odpowiedź będzie, że trzeba wymienić -z –. Wtedy powinno działać dobrze =)

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

Phil
źródło
4
Jest to OK, jeśli chcesz po prostu wyświetlić ciąg użytkownikowi. Użytkownik nie może naprawdę stwierdzić, że „oszukujesz” za pomocą podobnie wyglądającego znaku Unicode. Jeśli chcesz tylko użyć zwykłego myślnika, zobacz tę odpowiedź: stackoverflow.com/a/10895509/78234
Tal Weiss
2
Myślę, że kod jest przeznaczony dla endash, a nie zwykłego łącznika.
John61590,
Tak, to kreska, a nie myślnik thepunctuationguide.com/en-dash.html
Blundell
84

Pozostałe odpowiedzi są OK, jeśli chcesz wyświetlić ciąg użytkownikowi. Użytkownik tak naprawdę nie jest w stanie odróżnić „prawdziwego” myślnika od oszustwa Unicode.
Ale jeśli naprawdę musisz mieć myślnik (np. Ponieważ ten ciąg jest gdzieś używany jako hasło lub jako klucz url dla interfejsu API), możesz po prostu użyć tego formatu:

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

Ostrzeżenie zostanie usunięte, a ciąg można odczytać za pomocą zwykłego:

getResources().getString(R.string.EVA_API_KEY);
Tal Weiss
źródło
3
to najlepsza odpowiedź. Dzięki.
Guillermo Tobar
10
Jedna wskazówka: możesz chcieć umieścić część tools: ignore = "TypographyDashes" tylko w tych tagach <string>, które naprawdę wymagają prawdziwego myślnika.
Dan J
1
Z jakiegoś powodu zadziałało to tylko dla mnie, gdy ustawię ignorowanie na ciągu, którego używam. Dzięki za odpowiedź, dowiedziałem się, że to zły kreska, ale jak go uruchomić, nie było tak proste.
Mathijs Segers
1
Próbowałem uruchomić dialer telefoniczny dla 9-1-1 i twoja odpowiedź była do tego kluczem. Dzięki!
Roisgoen
14

Użyj ukośnika (\) przed każdym znakiem specjalnym. jak ja \ i Android.

To nazywa się znakiem ucieczki. (\)

RajaReddy PolamReddy
źródło
Myślę, że masz na myśli dodanie znaku ucieczki: „\” przed każdym znakiem specjalnym.
drew212
en.wikipedia.org/wiki/Escape_character znakiem ucieczki jest ukośnik odwrotny - "\" nie ukośnik - "/"
drew212
sprawdź moją odpowiedź teraz. to jest back slash ().
RajaReddy PolamReddy
5
kiedy używam tego, co wszyscy wypowiadają, usuwa znak „-” ... co otrzymuję to: 1261eba29d8c11e193e340409e0f44a1 zamiast 1261eba2-9d8c-11e1-93e3-40409e0f44a1 ...
roiberg
4

Kreska to znak interpunkcyjny podobny do łącznika lub znaku minusa, ale różniący się od obu tych symboli przede wszystkim długością i funkcją. Najpopularniejszymi wersjami myślnika są półpauza (-) i kreska em (-), nazwane odpowiednio na podstawie długości małej litery n i dużej litery M w kroju pisma.

Odniesienie

Wystarczy wymienić -z ponieważ po wpisaniu na klawiaturze kreskę, XML czyta myślnik jako minus, to wszystko.

Amr Ashraf
źródło
1

Prawdopodobnie masz to:

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

Ale potrzebujesz jednego z tych:

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

W drugim - jest zastępowane przez -. Trudno dostrzec różnicę wizualnie.

Maz
źródło
1
Uważaj jednak: jeśli zmienisz te symbole w adresie URL, może przestać działać (mój tak).
Dan J
Chcę zamienić symbol krótkiego myślnika (n-myślnika) na sekwencję ze ucieczką. Ale &#8211;wygląda na to, że jest to sekwencja ucieczki dla symbolu długiej kreski (m-myślnik).
toobsco42
0

Skrót do szybkiej naprawy w Eclipse to domyślnie Ctrl+ 1, aw Android Studio domyślnie Alt+ Enter.

Hasan El-Hefnawy
źródło