替换函数中的特殊字符

special characters in replace function

GREL 替换函数需要 3 个字符串,或者一个字符串、一个正则表达式和一个字符串。 在用于替换的第三个字符串中,某些字符具有特殊行为:\、\、\t、\n、\'、\" 以及其他一些组合。 \什么都不做,或者出错 \ 被解释为 \ \t 被解释为制表符 \n 被解释为换行 \" 被解释为 " \' 被解释为 '

例如: "abab".replace('b',"\") -> "Parsing error at offset 19: Missing number, string, identifier, regex, or parenthesized expression"

"abab".replace ('b',"\t") -> a a

我想这与Java有关... 还有其他特殊组合吗? 它是否记录在维基上的某个地方?

在字符串中,反斜杠(\)有特殊的含义。它基本上说不应该按照通常的意义来考虑以下字符。这就是为什么字符串 "t" 只是字母 t,而 "\t" 表示 tab.

此转义字符也用于在字符串中包含引号。例如,字符串 'L'alouette' 将触发错误,因为它包含与字符串周围的引号类型相同的引号。可以通过转义内部 ' : 'L\'alouette'(或使用双引号:"l'alouette")

来避免该问题

在您的示例中,OpenRefine 了解您要转义第二个引号 ("\") 并认为您的字符串未完成。在这种情况下,正确的语法是转义 \ 本身:"abab".replace('b', "\")

特殊字符列表

| Special characters | Display               |
|--------------------|-----------------------|
| \'                 | Single quotation mark |
| \"                 | Double quotation mark |
| \                 | Backslash             |
| \t                 | Tab                   |
| \b                 | Backspace             |
| \r                 | Carriage return       |
| \f                 | Formfeed              |
| \n                 | Newline               |