Cách đặt “-” trong tệp string.xml


81

Tôi cần có thể đặt "-" trong chuỗi bên trong strings.xmltệp của mình .

Vấn đề của tôi là khi tôi đang đặt chuỗi của mình "1261eba2-9d8c-11e1-93e3-40409e0f44a1", nhật thực kêu lên:

Nhiều chú thích được tìm thấy ở dòng này: - Thay thế "-" bằng một ký tự "en gạch ngang" (-, &; # 8211;)

Làm thế nào tôi có thể sửa lỗi này?


1
chính xác thì bạn cần giá trị đó ở đâu? Nó là một thẻ, một giá trị thẻ hay một giá trị thuộc tính?
rekaszeru

2
thay "-" bằng "\ -"
carmen_munich

Câu trả lời:


119

Vì vậy, khi bạn đọc thông báo lỗi, câu trả lời của bạn sẽ là bạn phải thay thế -bằng –. Sau đó nó sẽ hoạt động tốt =)

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


4
Điều này là OK khi bạn chỉ muốn hiển thị chuỗi cho người dùng. Người dùng không thể thực sự biết rằng bạn đang "gian lận" với một ký tự unicode trông tương tự. Nếu bạn chỉ muốn sử dụng dấu gạch ngang thông thường, hãy xem câu trả lời sau: stackoverflow.com/a/10895509/78234
Tal Weiss

2
Tôi nghĩ rằng mã đó là dấu cuối, không phải là dấu gạch nối thông thường.
John61590 14/09/16

Đó là dấu gạch ngang không phải là dấu gạch nối thepunctuationguide.com/en-dash.html
Blundell

84

Các câu trả lời khác phù hợp khi bạn muốn hiển thị chuỗi cho người dùng. Người dùng thực sự không thể phân biệt được sự khác biệt giữa dấu gạch ngang "thực" và thủ thuật unicode.
Tuy nhiên, nếu bạn thực sự phải có dấu gạch ngang (ví dụ: vì chuỗi đó được sử dụng làm mật khẩu ở đâu đó hoặc làm khóa url cho API) thì bạn chỉ có thể sử dụng định dạng này:

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

Cảnh báo sẽ bị xóa và có thể đọc chuỗi bằng cách sử dụng thông thường:

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

3
đây là câu trả lời tốt nhất. Cảm ơn.
Guillermo Tobar

10
Một mẹo: bạn có thể muốn đặt phần công cụ: ignore = "TypographyDashes" vào chỉ những thẻ <string> thực sự cần dấu gạch ngang.
Dan J

1
Vì một số lý do, nó chỉ hoạt động với tôi khi tôi đặt bỏ qua trên chuỗi mà tôi đang sử dụng. Cảm ơn câu trả lời, tôi phát hiện ra rằng đó là dấu gạch ngang sai, nhưng làm thế nào để làm cho nó hoạt động không đơn giản.
Mathijs Segers

1
Tôi đang cố khởi chạy trình quay số điện thoại cho 9-1-1 và câu trả lời của bạn là chìa khóa cho điều đó. Cảm ơn!
Roisgoen

14

Sử dụng dấu gạch chéo ngược (\) trước mỗi ký tự đặc biệt. giống như tôi & android.

Đây được gọi là ký tự thoát. (\)


Ý tôi là bạn nên thêm ký tự thoát: "\" trước mỗi ký tự đặc biệt.
vẽ212

vi.wikipedia.org/wiki/Escape_character ký tự thoát là dấu gạch chéo ngược - "\" không phải dấu gạch chéo - "/"
vẽ212

kiểm tra câu trả lời của tôi bây giờ. đây là dấu gạch chéo ngược ().
RajaReddy PolamReddy

5
khi im sử dụng tất cả những gì bạn đang Saing nó loại bỏ "-" char ... những gì im nhận được là: 1261eba29d8c11e193e340409e0f44a1 insted của 1261eba2-9d8c-11e1-93e3-40409e0f44a1 ...
roiberg

4

Dấu gạch ngang là một dấu câu tương tự như dấu gạch ngang hoặc dấu trừ, nhưng khác với cả hai biểu tượng này chủ yếu về độ dài và chức năng. Các phiên bản phổ biến nhất của dấu gạch ngang là dấu gạch ngang (-) và dấu gạch ngang em (-), được đặt tên cho độ dài của chữ hoa n và chữ hoa M tương ứng của một kiểu chữ.

Tài liệu tham khảo

Chỉ cần thay thế -bằng vì khi bạn gõ dấu gạch ngang trên bàn phím, XML đọc dấu gạch ngang là dấu trừ, vậy thôi.



1

Bạn có thể có cái này:

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

Nhưng bạn cần một trong hai điều này:

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

Trong câu thứ hai, dấu - được thay thế bằng dấu -. Thật khó để phân biệt sự khác biệt bằng mắt thường.


1
Tuy nhiên, hãy cẩn thận: nếu bạn thay đổi các ký hiệu này trong URL, nó có thể ngừng hoạt động (của tôi đã làm).
Dan J

Tôi muốn thay thế biểu tượng dấu gạch ngang ngắn (n-gạch ngang) bằng một chuỗi ký tự thoát. Nhưng có &#8211;vẻ như nó là trình tự thoát cho biểu tượng dấu gạch ngang dài (m-dash).
toobsco42

0

Phím tắt sửa nhanh trong Eclipse là Ctrl+ 1theo mặc định và trong Android Studio là Alt+ Entertheo mặc định.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.