替换函数中的特殊字符
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 |
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 |