Kesme işareti, bir kaynak paketine yerleştirildiğinde doğru şekilde çevrilmiyor


91

Kesme işareti, bir kaynak paketine yerleştirildiğinde doğru şekilde çevrilmiyor.

key = {0}'s brush is {1} centimeters tall

(e.g. Sam's brush is 4 centimeters tall)

Yukarıdaki anahtarı a'dan biçimlendirirsem kesme işareti gözden kaçıyor java.util.ResourceBundleBurada sorun ne olabilir?


4
+1 Bu problemle kendim karşılaştım ve bunun hakkında küçük bir blog yazısı yazdım. Belki bu "özellik" ile karşılaşan insanlar için ek bilgi sağlayabilir: mscharhag.com/2013/10/…
micha

Yanıtlar:


122

Tek alıntıdan şu şekilde kaçmalısınız:

key = {0}''s brush is {1} centimeters tall

Güzel cevap. Bu, sorunumu tek alıntılarla çözdü. Teşekkürler :) +1
Anish B.

35

Sorunun kaynak paketi değil , mesajı yazdırmak için kullandığınız MessageFormater olduğuna kesinlikle inanıyorum :

MessageFormater java dokümanından :

Bir String içinde, '' ( iki tek tırnak ) tek bir alıntıyı temsil eder. QuotedString, tek tırnak işaretleri dışında rastgele karakterler içerebilir; çevreleyen tek tırnaklar kaldırılır. UnquotedString, tek tırnak işaretleri ve sol küme parantezleri dışında rastgele karakterler içerebilir. Bu nedenle, biçimlendirilmiş '{0}' mesajıyla sonuçlanması gereken bir dize, '' '{' 0} '' veya '' '{0}' '' olarak yazılabilir.

Yani yazmanız gerekiyor:

{0}''s brush is {1} centimeters tall

6

Buradaki javadoc'a bakın

Bir String içinde, "''" tek bir alıntıyı temsil eder. Bir QuotedString, tek tırnak işaretleri dışında rastgele karakterler içerebilir; çevreleyen tek tırnaklar kaldırılır. UnquotedString, tek tırnak işaretleri ve sol küme parantezleri dışında rastgele karakterler içerebilir. Böylece, "'{0}'" biçimlendirilmiş mesajla sonuçlanması gereken bir dize, "'' '{' 0} ''" veya "'' '{0}' ''" olarak yazılabilir.


5

Tek tırnak işaretini iki katına çıkarmanız gerekiyor, yani {0} adlı çocuğun fırçası {1} santimetre uzunluğunda


5

@ Ralph'ın cevabına eklemek: Bunun bir MessageFormatşey olduğunu fark edeceksiniz ki,

text1=It's too late

karşı

text2={0}''s too late

text1Muhtemelen bir MessageFormater üzerinden çalışmaz (örneğin, argümanlar iletilirse veya geçilmezse spring farklı kod yollarına sahiptir), oysa text2olur. Dolayısıyla text1, içinde iki tek tırnak kullandıysanız , bunlar bu şekilde görüntülenebilir / gösterilecektir. Bu nedenle, herhangi bir bağımsız değişkenin biçimlendirilip biçimlendirilmediğini kontrol etmeniz ve buna göre bir veya iki tek tırnak kullanmanız gerekir.


5

Benim gibi (yukarıdakilerin hiçbiri işe yaramadı) tamamen takıldıysanız, kesme işaretini Unicode: \ u0027 ile değiştirebilirsiniz. Özellikler dosyanızda her zaman UTF sembolünü kullanmanıza izin verildiğini unutmayın.



1

String.xml'de Android sorunları olan herkes için tek tırnak yerine \ '\' kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.