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] #=> "\\"