web-dev-qa-db-ja.com

Androidのstrings.xmlファイルのエラー

アプリケーションのstring.xmlで長い文字列を宣言しました。

このように宣言されました

<string name="terms">PLEASE READ THESE TERMS OF USE CAREFULLY  BY ACCESSING THIS .................</string>

ただし、これにより次のエラーが発生します。

error: Apostrophe not preceded by \ (in PLEASE READ THESE TERMS OF USE CAREFULLY
101
Subrat

完全な文字列を投稿してください。しかし、私の推測では、文字列にアポストロフィ( ')文字があります。 (\ ')に置き換えると、問題が修正されます。例えば、

//strings.xml
<string name="terms">
Hey Mr. Android, are you stuck?  Here, I\'ll clear a path for you.  
</string>

参照:

http://www.mrexcel.com/forum/showthread.php?t=19535

https://code.google.com/archive/p/replicaisland/issues/48

254
Priyank

解決

strings.xmlのアポストロフィは、

\'



私の場合、strings.xmlでこの文字列にエラーがあり、修正しました。

<item>Most arguments can be ended with three words, "I don\'t care".</item>

ここで、そのコードを使用してアプリが正しくビルドされていることがわかります。

enter image description here

これが私のアプリの実際の文字列です。

enter image description here

23
JGallardo

アポストロフィの前に\を置く必要があります。この\ 'のように、values.xmlではなく、strings.xmlを編集していることも確認してください(エラーが表示された場合、Androidスタジオからこのファイルにリダイレクトされます)。 values.xmlを編集して再度コンパイルしようとすると、エラーが続くためです。これは最近私に起こっていました。

12
Walmac

https://developer.Android.com/guide/topics/resources/string-resource.html#FormattingAndStyling

アポストロフィと引用符のエスケープ

文字列にアポストロフィまたは引用符がある場合は、エスケープするか、文字列全体を他のタイプの引用符で囲む必要があります。たとえば、機能するものと機能しないものがあります。

<string name="good_example">"This'll work"</string>
<string name="good_example_2">This\'ll also work</string>
<string name="bad_example">This doesn't work</string>
<string name="bad_example_2">XML encodings don&apos;t work</string>
9
situee

Strings.xmlでヘブライ語(RTL言語)を使用します。この文字を手動でstring.xmlで検索しました: 'その前にエスケープ文字\を追加しました(今では\'のように見えます)が、同じエラーが発生します!

Char 'を再度検索し、char'を\ '(eng writing)に置き換えました。strings.xmlで右から左に' \のように見えるためです!!

問題が解決しました。

4
Li3ro

アポストロフィで使用される文字列はどこですか?私はそれを見つけることができません。投稿してください。文字列でアポストロフィを使用する必要がある場合は、次のようにエスケープシーケンス "\ '"を使用します。

did n't=didn\'t、文字列を見るだけ.xmlの最後のアイテム。

enter image description here

上記の画像はあなたの疑問をクリアすると思います。

Android ListViewを作成する最も簡単な方法

3
c49

この正規表現(?<!\\)'を使用して、エスケープされていないアポストロフィを検索します。バックスラッシュが前に付かないアポストロフィを見つけます。

3
Elad Finish

ユニコードに相当するアポストロフィと、xml文字列でサポートされていない他の文字の両方を使用できる場合があります。アポストロフィに相当するものは "\ u0027"です。

2
Photon Point

1。エラーの場合:文字列内のエスケープされていないアポストロフィ

私が見つけたのは、AAPT2ツールが時々xmlの間違った行を指していることです。したがって、strings.xmlファイル全体を修正する必要があります

Android St​​udioで、問題のあるファイルの使用:

Edit-> find-> replace

次に、最初のフィールド\ '(または\&、>、\ <、\ ")に書き込みます
2番目の入力 '(または&、>、<、 ")
その後、必要に応じてそれぞれを置き換えます。(または「すべてを置き換える」場合は ')
その後、最初のフィールドに再び '(または&、>、<、 ")を入力します
そして2番目に\ 'を書きます
次に、必要に応じてそれぞれを置き換えます(または、「すべてを置き換え」の場合は「)」

2。他の問題のあるシンボルの場合
間違った記号が見つからなくなるまで、次の半分の部分ごとに+ rebuildをコメントするために使用します。

例えば。エスケープされたWord "\ update"は、このようなエラーを予期せずドロップします:)

1
CodeToLife

'\'で単純にエスケープする最良の方法は機能しますが、'\'にすべて置換する場合、1回しか機能しないため、このソリューションは好きではありません。 2回目は、\\'が残ります。

したがって、\u0027を使用します。

0
Dan Bray