撇号前面没有\


77

我在android应用程序中定义了一个字符串:

<string name="search_occurs">'{string}' occurs {times}</string>

这给出了错误:撇号不以\开头(在“ {string}”中发生{times})

我尝试了很多方法来解决此问题:

<string name="search_occurs">\'{string}\' occurs {times}</string>
<string name="search_occurs">&apos;{string}&apos; occurs {times}</string>
<string name="search_occurs"><![CDATA['{string}' occurs {times}]]></string>
<string name="search_occurs"><![CDATA[\'{string}\' occurs {times}]]></string>

我无法摆脱错误。我想念什么?


6
\'为我工作。刚刚在Eclipse中尝试过。
CommonsWare 2013年

4
在撇号前面添加反斜杠后,有必要Clean重新构建整个项目以使Eclipse停止抱怨该错误。
Stan

Answers:


94

这些都应该根据http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling起作用:

<string name="search_occurs">\'{string}\' occurs {times}</string>
<string name="search_occurs">"'{string}' occurs {times}"</string>

第一个为我工作,第二个未经测试。伟大的工作
VVB

2
两者都应该,在这两种情况下,android studio都会在构建前修剪引号和反斜杠,并且还将\ u0027转换为单引号,然后显示错误。
厄尔尼诺”

46

只需在字符串中的\之前加上\就是错,这是真的:)


有更清洁的方法吗?我正在将应用本地化为法语,并且我的字符串文件夹包含很多文本。因此,遍历所有文本并添加反斜杠显然不是最好的主意。
The_Martian '16

不,那是唯一的方法。
КрумИлиев

@The_Martian我遇到了同样的问题,除了建议的方法以外,您是否找到其他方法?
没人

3

您为什么不提供'替换字符串呢?

您还知道这样的构造吗?

<string name="profile_age_range_text_between">between %1$d and %2$d</string>
<string name="unit_height_inches">%1$d\'%2$d ft</string>
<string name="unit_distance_miles">%s mi</string>

2

用(\')替换撇号(')或在每个(')之前添加\

注意:仅复制()内的文本


2

确保您正在编辑正确的文件。如该答案所述,当您收到错误消息时,Android Studio会打开一个values.xml文件,该文件看起来与原始文件相似。您必须\在原始strings.xml文件中(或任何有问题的字符所在的位置)添加。否则,它将继续重复该错误。




-1

我根据自己的情况找到了解决方案。

  1. 选择您的string.xml文件
  2. 右键单击并在资源管理器中打开显示
  3. 编辑来自string.xml文件的行并保存代码。
  4. 重新打开Android Studio并刷新解决方案。

现在代码将运行。

注意:can上使用Apostrophe时出现错误。所以我变成了Cannot。现在,我的方案将起作用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.