Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为什么索引为[0,1]的子字符串返回两个字符,包括转义反斜杠?_Ruby_String_Escaping - Fatal编程技术网

Ruby 为什么索引为[0,1]的子字符串返回两个字符,包括转义反斜杠?

Ruby 为什么索引为[0,1]的子字符串返回两个字符,包括转义反斜杠?,ruby,string,escaping,Ruby,String,Escaping,我有: 我得到: long_string # => "\nIt was the best of times,\nIt was the worst of times.\n" 我很好奇为什么我得到两个字符,而不是像在其他情况下那样只得到“\” 这就是转义字符在子字符串及其后的处理方式吗?[0,1]将始终返回2个字符-字符0和字符1。[0,0]将返回第一个字符。已解决-如上所述的灵活引号将字符串存储为“\n这是最好的时期,\n这是最差的时期。\n”(双引号)。双引号字符串解释转义字符,而单引号

我有:

我得到:

long_string # => "\nIt was the best of times,\nIt was the worst of times.\n"
我很好奇为什么我得到两个字符,而不是像在其他情况下那样只得到
“\”


这就是转义字符在子字符串及其后的处理方式吗?

[0,1]将始终返回2个字符-字符0和字符1。[0,0]将返回第一个字符。

已解决-如上所述的灵活引号将字符串存储为
“\n这是最好的时期,\n这是最差的时期。\n”
(双引号)。双引号字符串解释转义字符,而单引号字符串不解释转义字符

例如

string.size==1(在上面)

string.size==2英寸以下

string = "\n" 
根据

str[开始,长度]→ 新建或无

如果传递了
开始
索引和
长度
,则返回包含从
开始
索引开始的
长度
字符的子字符串

比如说

string = '\n'
但单引号和双引号之间有区别

双引号允许许多转义序列,例如
“\n”
“\t”
“\s”
“\r”
等。所有这些不是两个,而是一个字符

“\n”
只是一个(换行)字符。但是
“\n”
包含两个字符(反斜杠和字母)

当您尝试从零索引开始返回一个字符时,比较双引号和单引号的不同行为

"\n".size #=> 1
'\n'.size #=> 2

如上所述,
“\\”
仅为一个字符(反斜杠)。另一个反斜杠用于转义。

在KOAN中的其他地方似乎不是这样,例如,
断言等于“I”,长字符串[0,1]
对于同一文本的单行版本
[0,0]
返回空字符串
[0,1]
返回1个字符是否确定
\n
是两个字符,不只是一个换行符?
"Hello"[0, 1] #=> "H"
'Hello'[0, 1] #=> "H"
"\n".size #=> 1
'\n'.size #=> 2
"\n"[0, 1] #=> "\n"
'\n'[0, 1] #=> "\\"