←
PDF 158 / 520 Strings
→
English · PDF 158
Original PDF page 158
中文 · PDF 158

parse_number() 解决了第二个问题:它会忽略数字前后的非数字字符。这对货币和百分比特别有用,但也可以用来提取嵌入在文本中的数字:

parse_number("$100") #> [1] 100 parse_number("20%") #> [1] 20 parse_number("It cost $123.45") #> [1] 123

最后一个问题通过 parse_number() 与 locale 的组合来解决,因为 parse_number() 会忽略“分组标记”:

# 在美国使用 parse_number("$123,456,789") #> [1] 1.23e+08 # 在欧洲许多地区使用 parse_number( "123.456.789", locale = locale(grouping_mark = ".") ) #> [1] 1.23e+08 # 在瑞士使用 parse_number( "123'456'789", locale = locale(grouping_mark = "'") ) #> [1] 1.23e+08

字符串

parse_character() 看起来应该非常简单——它似乎只需返回其输入即可。遗憾的是,事情并没有这么简单,因为表示同一个字符串有多种方式。要理解其中的原理,我们需要深入了解计算机是如何表示字符串的细节。在 R 中,我们可以使用 charToRaw() 来获取字符串的底层表示:

charToRaw("Hadley") #> [1] 48 61 64 6c 65 79

每个十六进制数代表一个字节的信息:48 是 H,61 是 a,依此类推。从十六进制数到字符的映射称为编码,在本例中该编码称为