stringr | 文本处理方法(Ⅰ-1):字符串处理函数(上)

stringrtidyverse系列包中专门用于文本处理的工具包,其中字符串处理的函数均遵循str_*的命名方式。

library(stringr)

本篇先简单介绍部分str_*()系列函数。

words是该包自带的数据集,其中包含了980个英文单词。本篇从中选取三个单词作为示例数据:

(word3 <- words[c(9, 98, 980)])
## [1] "act"   "blow"  "young"
  • 字符串长度

str_length()函数用于计算字符串的长度(包含空格);若为字符串向量,则分别计算各元素的长度。

str_length(string)

示例如下:

str_length(word3)
## [1] 3 4 5

str_length(" A B C")
## [1] 6
  • 连接字符串

str_c()str_flatten()函数用于连接字符串。语法结构如下:

str_c(..., sep = "", collapse = NULL)
str_flatten(string, collapse = "")
  • sep:连接符号;在连接多个字符串时使用;

  • collapse:连接符号;在连接字符串向量中的元素时使用;

  • str_flatten()函数只有collapse参数,只能用于连接字符串向量的元素。

连接多个字符串:

str_c(word3[1], word3[2], word3[3],
      sep = "-")
## [1] "act-blow-young"

str_c(word3[1], word3[2], word3[3],
      collapse = "-")  # 不起作用
## [1] "actblowyoung"
  • 上述例子中连接的是多个字符串,因此collapse参数不起作用;

  • sep参数的默认状态为不使用连接符号,因此第二行代码的输出结果为actblowyoung

连接字符串向量的元素:

str_c(word3, sep = "-") # 不起作用
## [1] "act"   "blow"  "young"

str_c(word3, collapse = "-")
## [1] "act-blow-young"

str_flatten(word3, "-")
## [1] "act-blow-young"
  • sep参数在连接字符串向量的元素时不起作用;由于str_c()函数的collapse参数默认值为NULL,因此第一行代码实际上没有进行连接;

  • str_flatten()函数的collapse在第二个位置上,调用时可省略参数名。

  • 字符串向量的元素排序

str_order()函数仅返回每个元素的序号,不执行排序操作;str_sort()执行排序操作。语法结构如下:

str_order(x, decreasing = FALSE,
          na_last = TRUE, locale = "en",
          numeric = FALSE, ...)
str_sort(x, decreasing = FALSE,
         na_last = TRUE, locale = "en",
         numeric = FALSE, ...)
  • x:字符串向量;

  • decreasing:逻辑型参数;是否降序,默认为否;

  • na_last:TRUE表示将缺失值放置在结尾,FALSE表示放置在开头,NA表示删除缺失值;

  • locale:字符串的语言类型,默认为英语(en);

  • numeric:是否按数值排序,默认为否。

txt <- c(NA, "123", word3)
str_order(txt)
## [1] 2 3 4 5 1

str_sort(txt)
## [1] "123"   "act"   "blow"  "young" NA

str_sort(txt, na_last = F)
## [1] NA      "123"   "act"   "blow"  "young"

str_sort(txt, na_last = NA)
## [1] "123"   "act"   "blow"  "young"
  • 大小写转换

str_to_upper()函数将字符串全部转为大写字母;str_to_lower()函数全部转为小写字母;str_to_title()函数将字符串的每个单词的首字母转为大写,其余转为小写;str_to_sentence()函数将字符串首字母大写,其余转为小写。语法结构如下:

str_to_upper(string, locale = "en")
str_to_lower(string, locale = "en")
str_to_title(string, locale = "en")
str_to_sentence(string, locale = "en")

示例如下:

str_to_upper("welcome")
## [1] "WELCOME"

str_to_lower("weLCome")
## [1] "welcome"

str_to_title("welcome to Rstudier")
## [1] "Welcome To Rstudier"

str_to_sentence("welcome to Rstudier")
## [1] "Welcome to rstudier"
  • 删除空格

str_trim()函数用于删除字符串首、尾(可选)的空格;str_squish()函数除删除首、尾空格(不可选)外,还会删除内部多余的空格。语法结构如下:

str_trim(string, side = c("both", "left", "right"))
str_squish(string)
  • side:both表示同时删除首、尾空格;left表示仅删除开头空格;right表示仅删除结尾空格。

str_trim(" wel  come to Rstudier ", side = "left")
## [1] "wel  come to Rstudier "

str_squish(" wel  come to Rstudier ")
## [1] "wel come to Rstudier"
  • 上述例子中wel come内部有两个空格,第二行代码的输出结果将其删除了一个;

  • 删除内部空格可以使用st_remove()函数根据模式匹配进行删除,详见下篇。

  • 提取字符串的部分

str_sub()函数可以根据起、始位置提取字符串的部分。语法结构如下:

str_sub(string, start = 1L, end = -1L)
str_sub(string, start = 1L, end = -1L,
        omit_na = FALSE) <- value

示例如下:

x <- "welcome to Rstudier"
str_sub(x, 4, 12)
## [1] "come to R"

str_sub(x, 4, 12) <- "U"; x
## [1] "welUstudier"
  • str_extract()函数可以根据模式匹配进行提取,详见下篇。

  • 其他

str_pad()函数通过width参数设置字符串的最短长度,不足的通过pad参数补充,side参数控制补充的位置。语法结构如下:

str_pad(string, width, side = c("left", "right", "both"),
        pad = " ")

示例如下:

str_pad(word3, width = 6, side = "both",
        pad = "-")
## [1] "-act--" "-blow-" "young-"

str_trunc()参数通过width参数设置字符串的最大长度,多余部分使用ellipsis参数的内容代替(默认为...)。语法结构如下:

str_trunc(string, width, side = c("right", "left", "center"),
          ellipsis = "...")

示例如下:

str_trunc(word3, width = 4, side = "right")
## [1] "act"  "blow" "y..."

str_dup()函数可以重复字符串,重复次数由times参数控制。语法结构如下:

str_dup(string, times)

示例如下:

str_dup(word3, times = 3)
## [1] "actactact"       "blowblowblow"    "youngyoungyoung"

你可能感兴趣的:(字符串,python,js,css,正则表达式)