アプリケーションの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
完全な文字列を投稿してください。しかし、私の推測では、文字列にアポストロフィ( ')文字があります。 (\ ')に置き換えると、問題が修正されます。例えば、
//strings.xml
<string name="terms">
Hey Mr. Android, are you stuck? Here, I\'ll clear a path for you.
</string>
参照:
strings.xmlのアポストロフィは、
\'
私の場合、strings.xmlでこの文字列にエラーがあり、修正しました。
<item>Most arguments can be ended with three words, "I don\'t care".</item>
ここで、そのコードを使用してアプリが正しくビルドされていることがわかります。
これが私のアプリの実際の文字列です。
アポストロフィの前に\を置く必要があります。この\ 'のように、values.xmlではなく、strings.xmlを編集していることも確認してください(エラーが表示された場合、Androidスタジオからこのファイルにリダイレクトされます)。 values.xmlを編集して再度コンパイルしようとすると、エラーが続くためです。これは最近私に起こっていました。
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't work</string>
Strings.xmlでヘブライ語(RTL言語)を使用します。この文字を手動でstring.xmlで検索しました: 'その前にエスケープ文字\を追加しました(今では\'のように見えます)が、同じエラーが発生します!
Char 'を再度検索し、char'を\ '(eng writing)に置き換えました。strings.xmlで右から左に' \のように見えるためです!!
問題が解決しました。
アポストロフィで使用される文字列はどこですか?私はそれを見つけることができません。投稿してください。文字列でアポストロフィを使用する必要がある場合は、次のようにエスケープシーケンス "\ '"を使用します。
did n't=didn\'t、文字列を見るだけ.xmlの最後のアイテム。
上記の画像はあなたの疑問をクリアすると思います。
この正規表現(?<!\\)'
を使用して、エスケープされていないアポストロフィを検索します。バックスラッシュが前に付かないアポストロフィを見つけます。
ユニコードに相当するアポストロフィと、xml文字列でサポートされていない他の文字の両方を使用できる場合があります。アポストロフィに相当するものは "\ u0027"です。
1。エラーの場合:文字列内のエスケープされていないアポストロフィ
私が見つけたのは、AAPT2ツールが時々xmlの間違った行を指していることです。したがって、strings.xmlファイル全体を修正する必要があります
Android Studioで、問題のあるファイルの使用:
Edit-> find-> replace
次に、最初のフィールド\ '(または\&、>、\ <、\ ")に書き込みます
2番目の入力 '(または&、>、<、 ")
その後、必要に応じてそれぞれを置き換えます。(または「すべてを置き換える」場合は ')
その後、最初のフィールドに再び '(または&、>、<、 ")を入力します
そして2番目に\ 'を書きます
次に、必要に応じてそれぞれを置き換えます(または、「すべてを置き換え」の場合は「)」
2。他の問題のあるシンボルの場合
間違った記号が見つからなくなるまで、次の半分の部分ごとに+ rebuildをコメントするために使用します。
例えば。エスケープされたWord "\ update"は、このようなエラーを予期せずドロップします:)
'
を\'
で単純にエスケープする最良の方法は機能しますが、'
で\'
にすべて置換する場合、1回しか機能しないため、このソリューションは好きではありません。 2回目は、\\'
が残ります。
したがって、\u0027
を使用します。