Android中的strings.xml文件出错

时间:2011-04-13 23:55:08

标签: android xml escaping

我在应用程序的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

10 个答案:

答案 0 :(得分:246)

发布完整的字符串。虽然,我的猜测是你的字符串中有一个撇号(')字符。用(\')替换它,它将解决问题。例如,

//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=195353

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

答案 1 :(得分:21)

解决方案

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

答案 2 :(得分:11)

你必须在撇号之前加\。像这样\#39; ,还要检查您是否正在编辑strings.xml而不是values.xml(android studio会在显示错误时将您指向此文件)。因为如果您编辑values.xml并尝试再次编译,则错误仍然存​​在。这最近发生在我身上。

答案 3 :(得分:9)

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>

答案 4 :(得分:4)

我在strings.xml中使用希伯来语(RTL语言)。 我已经在string.xml中手动搜索了这个char:' 比我添加它的转义字符\前面(现在它看起来像\')仍然有同样的错误!

我再次搜索了char',我用''(英文写作)替换了char',因为它显示了一个向左的权利,它看起来就像在strings.xml中的\!

问题解决了。

答案 5 :(得分:2)

您可以使用unicode等效的撇号和xml字符串中不支持的其他字符。撇号的等价物是“\ u0027”。

答案 6 :(得分:2)

使用此正则表达式(?<!\\)'搜索未转义的撇号。 它找到一个没有反斜杠的撇号。

答案 7 :(得分:1)

你的撇号在哪里使用了字符串?我找不到。请发布。如果你需要在字符串中使用撇号,只需像这样使用转义序列“\”。

XML中的

没有 = 没有,只看一下strings.xml的最后一项。

enter image description here

我认为上面的图片会清除你的怀疑。

答案 8 :(得分:1)

1。表示错误:字符串中未转义的撇号

我发现AAPT2工具有时会指向xml中的错误行。 所以你应该纠正整个strings.xml文件

在Android Studio中,在问题文件中使用:

编辑 - &GT; find-&GT;替换

然后写入第一个字段\'(或\&amp;,&gt;,\&lt;,\“)
在第二个放''或&amp;,&gt;,&lt;,“) 然后在需要的时候更换每个。(或者在'的情况下“reptlace all”) 然后在第一个字段再次输入'(或&amp;,&gt;,&lt;,“)
并在第二次写'\\ 然后在需要时替换每个。(或者用')“替换所有”

<强> 2。其他有问题的符号
  我用来评论每个下半部分+重建 直到我找不到错误的标志。

E.g。一个转义的单词“\ update”意外地丢弃了这样的错误:)

答案 9 :(得分:0)

'简单地转义\'的最佳答案是可行的,但是我不喜欢该解决方案,因为在将'替换为\'时,它只能工作一旦。第二次您将得到\\'的帮助。

因此,请使用:\u0027