【问题标题】:Apostrophe not preceded by \前面没有\的撇号
【发布时间】:2013-03-20 07:06:48
【问题描述】:

我在 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>

我无法摆脱错误。我错过了什么?

【问题讨论】:

  • \' 为我工作。刚刚在 Eclipse 中试了一下。
  • 在撇号前添加反斜杠后,需要Clean 并为Eclipse 重建整个项目以停止抱怨错误。

标签: android xml-parsing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    将撇号 (') 替换为 (\') 要么 在每个 (') 之前添加 \

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

    【讨论】:

      【解决方案3】:

      我得到了基于我的场景的解决方案。

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

      现在代码将运行。

      注意:我在不能上使用撇号时出现错误。所以我变成了不能。现在我的方案可以工作了。

      【讨论】:

        【解决方案4】:

        此错误是由字符串中使用的撇号引起的

        用\'替换撇号

        【讨论】:

          【解决方案5】:

          回复https://stackoverflow.com/users/3339394/the-martian 有用 \' 替换' 的一般解决方案,您必须将文本复制到文字编辑器(如记事本 ++)中,然后使用程序中的“替换”选项将整个 's 替换为 \' 。 (因为我没有足够的声誉,我不得不在答案中写下对不起!)

          【讨论】:

            【解决方案6】:

            只需将 \ 放在字符串中的 ' 之前 这是错误的 这是真的:)

            【讨论】:

            • 有更清洁的方法吗?我正在将我的应用程序本地化为法语,我的字符串文件夹包含大量文本。所以浏览所有文本并添加反斜杠显然不是最好的主意。
            • 不,这是唯一的方法。
            • @The_Martian 我也遇到了同样的问题,你有没有找到建议以外的方法?
            【解决方案7】:

            这些都应该根据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>
            

            【讨论】:

            • 第一个对我有用,没有测试过第二个。伟大的工作
            • 两者都应该,并且在这两种情况下,android studio 在构建之前都会修剪引号和反斜杠,还将 \u0027 转换为单引号,然后显示错误。
            【解决方案8】:

            为什么不向' 提供替换它的字符串?

            你也知道这样的构造吗?

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-03-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-11-10
              相关资源
              最近更新 更多