Android 中的 strings.xml 文件出错

问题描述 投票:0回答:11

我在应用程序的

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
android xml escaping
11个回答
347
投票

发布完整的字符串。不过,我的猜测是您的字符串中有一个撇号(')字符。将其替换为 (\') 即可解决问题。例如,

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


36
投票

解决方案

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


20
投票

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>
    

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


9
投票
使用此正则表达式

(?<!\\)'

 搜索未转义的撇号。
它找到前面没有反斜杠的撇号。


4
投票
我在 strings.xml 中使用希伯来语(RTL 语言)。 我已手动在 string.xml 中搜索此字符:' 比我在它前面添加了转义字符 \ (现在看起来像 \' )并且仍然遇到相同的错误!

我再次搜索了 char ' 并将 char ' 替换为 \'(英文写作),因为它显示从右到左,所以看起来像 strings.xml 中的 '\ !!

问题解决了。


3
投票
简单地用

'

 转义 
\'
 的最佳答案是有效的,但我不喜欢这个解决方案,因为当使用将所有内容替换为 
'
\'
 时,它只能工作一次。第二次你会留下
\\'

因此,请使用:

\u0027


2
投票
您可以使用 Unicode 等效的撇号和 xml 字符串中不支持的其他字符。撇号的等效项是“\u0027”。


1
投票

1. 错误:字符串中未转义的撇号

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

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

编辑->查找->替换

然后在第一个字段中写入\'(或\&、>、\

第二个输入 '( 或 &,>,<,\")
然后根据需要替换每个。(或“reptlace all”以防万一带有')<,")
然后在第一个字段中再次输入 '( 或 &,>,
然后在第二个地方写\'<,")
然后根据需要替换每个。(或“替换全部”,如果有')

2。对于其他有问题的符号 我常常评论下半部分+重建 直到我找不到错误的标志为止。

例如转义词“\update”意外地丢弃了此类错误:)


1
投票
    要查找文件中的所有 ',请执行以下操作:
Ctrl + F [在搜索字段中输入撇号] '

    '应该写成“世界的”

0
投票
  1. 在这种情况下,请注意所有字符串,

  2. 正常句子中没有任何单词带有“'”这个符号。

  3. 在此标记前添加“\”即可。

    ex. Normal sentence: I 'll don't make cry anyone. Solution sentence : I \'ll don\'t make cry anyone.
    
    
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.