Android中的strings.xml文件出错

Sub*_*rat 104 xml android escaping

我在string.xml应用程序中声明了一个长字符串.

宣布像这样

<string name="terms">PLEASE READ THESE TERMS OF USE CAREFULLY  BY ACCESSING THIS .................</string>
Run Code Online (Sandbox Code Playgroud)

但是这会产生以下错误:

error: Apostrophe not preceded by \ (in PLEASE READ THESE TERMS OF USE CAREFULLY
Run Code Online (Sandbox Code Playgroud)

Pri*_*ank 266

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

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

参考:

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

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

  • 为什么没有人谈论这个愚蠢的要求,我们逃避字符串数据中的每一个撇号?甚至在CDATA部分内! (26认同)
  • @PhilKulak在Android strings.xml中,您可以将整个字符串括在其他类型的封闭引号中,例如`<string name ="good_example">"This'll work"</ string>`Reference:https:// developer. android.com/guide/topics/resources/string-resource.html#FormattingAndStyling (4认同)
  • @PhilKulak heh,例如法语就很疯狂。我们将搜索并替换 ftw。 (3认同)

JGa*_*rdo 24

strings.xml中的撇号应写为

\'
Run Code Online (Sandbox Code Playgroud)



在我的情况下,我在strings.xml中有一个错误,我修复了它.

<item>Most arguments can be ended with three words, "I don\'t care".</item>
Run Code Online (Sandbox Code Playgroud)

在这里,您可以看到我的应用使用该代码正确构建

在此输入图像描述

这是我的应用程序中的实际字符串.

在此输入图像描述

  • 我真傻,因为我使用的是 XML,所以我使用的是 ',这也是一个错误。 (2认同)

小智 12

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


sit*_*uee 10

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>
Run Code Online (Sandbox Code Playgroud)


小智 8

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