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
149793 次浏览

张贴完整的字符串。不过,我猜测您的字符串中有一个撇号(’)字符。用(’)替换它,它将修复这个问题。比如说,

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

我在 strings.xml 中使用希伯来语(RTL 语言)。 我已经手动搜索了 string.xml 中的这个字符: 然后在它前面添加了转义字符(现在看起来像’) ,但仍然得到相同的错误!

我再次搜索 char’,并将 char’替换为’(eng 编写) ,因为它在 strings.xml 中从右向左显示,看起来就像’!

问题解决了。

解决方案

Xml中的撇号应该写成

\'


例子

在我的例子中,我的 Xml中的这个字符串有一个错误,我修复了它。

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

在这里您可以看到我的应用程序正确构建与该代码。

enter image description here

下面是我的应用程序中的实际字符串。

enter image description here

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>

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

你必须在撇号前加上。像这样’,还要检查您正在编辑的是 strings.xml 而不是 values.xml (android 工作室在显示错误时指示您进入该文件)。因为如果编辑 values.xml 并再次尝试编译,错误仍然存在。这是最近发生在我身上的事。

1. for error: < strong > 字符串中未转义的撇号

我发现 AAPT2工具有时指向 xml 中的错误行。 因此,您应该更正整个 strings.xml 文件

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

编辑-> 查找-> 替换

然后写入第一个字段’(或 & ,> ,< ,”)
In second put’(or & ,> ,< ,”)
然后,如果需要,替换每一个。(或“替换全部”的情况下与’)
然后在第一个字段中再次输入’(或 & ,> ,< ,”)
在第二次写作中
然后,如果需要,替换每一个。(或“替换全部”的情况下与’)

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

例如,一个转义词“ update”意外地丢失了这样的错误:)

简单地用 \'转义 '的最佳答案可行,但我不喜欢这个解决方案,因为当用 '替换所有 \'时,它只能工作一次。第二次你会留下 \\'

因此,使用: \u0027

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

  1. 要查找文件中的所有内容,请执行以下操作:

Ctrl + F [在搜索框中输入撇号]’

  1. 应该写成“世界”