在非转义字符上做什么?

我问了另一个问题,所以我会问别的问题。

根据http://www.c-point.com/javascript_tutorial/special_characters.htm ,有一些转义字符,例如\ n和\ b。 然而/不是其中之一。 在这种情况下会发生什么? ( \/ )是\被忽略了吗?

我在javascript’http 'http:\/\/www.site.com\/user'有一个字符串。 并不是说这是一个带有' so with '的文字,它看起来像\\/无论如何我想逃避这个字符串,因此关于非’特殊’转义字符会发生什么的问题。

另一个问题是,如果我有name:\t me (或"name:\\t me"是否有一个函数来逃避它所以有一个标签?我正在使用C#,这些字符串来自一个JSON文件

根据Mozilla的说法:

对于未列出的字符,将忽略前面的反斜杠,但不推荐使用此用法。

https://developer.mozilla.org/en/JavaScript/Guide/Values%2c_Variables%2c_and_Literals#section_19

未列出\/序列,但至少有两种常见用法:

<1>需要在使用/foo/ syntax的正则表达式中转义文字斜杠:

 var re = /^http:\/\//; 

<2>在HTML中嵌入JavaScript代码时,需要避免使用无效的HTML:

  

…触发器: 未打开的元素“P”的结束标记

  

……没有。

如果在作为转义序列没有意义的字符之前找到反斜杠,它将被忽略,即"\/""/"是Javascript中的相同字符串。

/字符是正则表达式分隔符,因此只需在正则表达式上下文中进行转义:

 /[az]/[0-9]/ // Invalid. /[az]\/[0-9]/ // Matches a lowercase letter, followed by a slash, // followed by a digit. 

最后,如果要将反斜杠后跟一个字符折叠到相应的转义序列中,则必须替换整个表达式:

 string expr = "name:\\t me"; // Backslash followed by `t`. expr = expr.Replace("\\t", "\t"); // Tab character. 

\被评估为\ if \ +下一个字符不是转义序列。

例子:
\ t – >转义序列t – >标签
\\ t – > escape \和t – > \ t
\\ – >转义序列\ – > \
\ c – > \ c(不是转义序列)
\ a – >转义序列a – > ???

请注意,在完全奇怪的符号上也有转义序列,所以要小心。 恕我直言,语言和操作系统之间没有很好的标准。

实际上,它更加非标准:基本的C’\ y’ – > y +警告,而不是\ y。 所以这是非常依赖语言的,要小心。 (无视我下面的评论)。

BR,

尤哈

编辑:您使用的是哪种语言?= Java和c的行为略有不同。

C和java似乎有相同的转义,python有不同: http : //en.csharp-online.net/CSharp_FAQ : _What_are_the_CSharp_character_escape_sequences
http://www.cerritos.edu/jwilson/cis_182/language_resources/java_escape_sequences.htm
http://www.java2s.com/Code/Python/String/EscapeCodesbtnar.htm

在C#中,您可以使用反斜杠字符告诉编译器您真正想要的是什么。 编译后,这些转义字符不存在。

如果你使用string myString = "\t"; 该字符串实际上将包含一个TAB字符,而不仅仅代表一个。 你可以通过检查myString.Length来测试它,它是1。

如果你想将字符“反斜杠”和“t”发送给你的JSON客户端,你必须通过转义反斜杠告诉编译器保持双手反斜杠:

string myString = "\\t"; 将产生一个由两个字符组成的字符串,即“反斜杠”和“t”。

如果你必须跨越多层逃逸和失败,事情会变得混乱,尝试通过这些层进行调试,看看幕后真正发生了什么。