2

我想知道是否可以返回“奇怪”字符,或者更确切地说是对语言很重要的字符
例如: \ ; '
我想知道,因为我需要通过一个检查文本键的 unicode 值的函数返回它们,并通过它的数字返回字符,所以我也需要这些。
我收到 356|error: missing terminating ' 字符
第 356 行如下所示

return '\';

想法?

4

5 回答 5

5

反斜杠是特殊字符的转义。如果你想要一个文字反斜杠,你必须用另一个反斜杠来转义它。尝试:

return '\\';
于 2013-02-25T17:14:18.560 回答
4

这里唯一的问题是反斜杠用于转义文字中的字符。例如\n是一个新行,\t是一个水平制表符。在您的情况下,编译器看到\'并认为您的意思是一个'字符(这样您就可以拥有这样的'字符:)'\''。你只需要逃避你的反斜杠:

return '\\';

尽管这看起来像一个包含两个字符的字符文字,但它不是。\\是一个转义序列,表示单个反斜杠。

同样,要返回 a ',您将执行以下操作:

return '\'';

表 7 给出了可用的转义序列列表:

在此处输入图像描述

您可以有一个字符文字,其中包含执行字符集中的任何字符,结果char将具有该字符的值。但是,如果该值不适合 a char,它将具有实现定义的值。

于 2013-02-25T17:16:26.493 回答
1

可以返回任何字符。

然而对于其中一些,你必须使用backslash:来逃避它\

所以要返回反斜杠,你必须返回:

return '\\';
于 2013-02-25T17:16:40.520 回答
0

要获得一个简单的反斜杠,请使用'\\'.

在 C 中,以下字符使用反斜杠表示:

  • \a 或 \A :铃铛
  • \b 或 \B :退格键
  • \f 或 \F :换页符
  • \n 或 \N :换行
  • \r 或 \R :回车
  • \t 或 \T :水平制表符
  • \v 或 \V :垂直制表符
  • \xhh 或 \Xhh :十六进制位模式
  • \ooo :八进制位模式
  • \0 : 一个空字符
  • \“ : 性格
  • \' : 性格
  • \\ : 反斜杠 (\)

一个普通的反斜杠会使系统感到困惑,因为它期望一个字符跟随它。因此,您需要“逃避”它。八进制/十六进制位模式起初可能看起来不太有用,但它们让您可以使用ANSI 转义码

如果反斜杠后面的字符没有指定合法的转义序列,如上所示,结果是实现定义的,但反斜杠后面的字符通常按字面意思理解,就好像转义不存在一样。

于 2013-02-25T17:21:15.653 回答
0

如果您必须多次返回此类字符(“,',\,{,] ...等),您应该编写一个转义该字符的函数。我编写了一次该函数,它是:

function  EscapeSpecialChars (_data) {
            try {
                if (!GUI_HELPER.NOU(_data)) {
                    return _data;
                }
                if (typeof (_data) != typeof (Array)) {
                    return _data;
                }
                while (_data.indexOf("
") > 0) {
                    _data = _data.replace("
", "");
                }
                while (_data.indexOf("\n") > 0) {
                    _data = _data.replace("\n", "\\n");
                }
                while (_data.indexOf("\r") > 0) {
                    _data = _data.replace("\r", "\\r");
                }
                while (_data.indexOf("\t") > 0) {
                    _data = _data.replace("\t", "\\t");
                }
                while (_data.indexOf("\b") > 0) {
                    _data = _data.replace("\b", "\\b");
                }
                while (_data.indexOf("\f") > 0) {
                    _data = _data.replace("\f", "\\f");
                }
                return _data;
            } catch (err) {
               alert(err);
            }

        },

然后像这样使用它:

return EscapeSpecialChars("\'"{[}]");

你应该改进这个功能。它对我有用,但它并没有转义所有特殊字符。

于 2013-02-25T17:24:42.947 回答