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 5str_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 1str_sort(txt)
## [1] "123"   "act"   "blow"  "young" NAstr_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"

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

  1. sql把字串字段相加串连的方法(CONCAT字符串连接函数) sysdee 发表于 成功志 分类,标签: sql把字串字段相加串连的方法 CONCAT字符串连接函数 18 5月 2012 0 有的时候

    sql把字串字段相加串连的方法(CONCAT字符串连接函数) sysdee 发表于 成功志 分类,标签: sql把字串字段相加串连的方法 CONCAT字符串连接函数 185月2012 0 有的时候,我 ...

  2. stringr | 文本处理方法(Ⅰ-3):字符串处理函数(下)

    本系列的上一篇推文介绍了正则表达式,本篇继续介绍str_*()系列函数,这些函数均有一个共同的参数pattern. library(stringr) 提取 前面介绍了按位置提取的函数str_sub() ...

  3. Pandas处理dataframe的文本数据列:使用str属性获取数据列的字符串方法类、split函数基于指定分隔符拆分数据列的内容为列表、使用len计算每个列表的长度

    Pandas处理dataframe的文本数据列:使用str属性获取数据列的字符串方法类.split函数基于指定分隔符拆分数据列的内容为列表.使用len计算每个列表的长度 目录

  4. Python字符串类型:字符串索引、字符串切片、字符串format()方法格式化、字符串操作符、字符串处理函数

    字符串:由0个或多个字符组成的有序序列sequence. 一.字符串表示方式:2类4种 由一对单引号或双引号表示,该方式仅用于表示单行字符串 由一对三单引号或三双引号,该方式可以表示多行字符串 如果希 ...

  5. Excel中拼接文本字符串-CONCATENATE函数

    Excel中拼接文本字符串-CONCATENATE函数 CONCATENATE函数 函数简介 函数语法 函数说明 示例 CONCATENATE函数 函数简介 CONCATENATE 函数用于Excel ...

  6. python字符串find函数-Python字符串的方法,查找和替换

    Python数字 整型 int 如:1 4 8 浮点型 float 如:1.0 3.6 78.9 长整型 long 如:1L 37565846588L(在一个整数后面加上L就是长整型,理论上长整型的长 ...

  7. 【C 语言】字符串拷贝 ( 函数形参使用推荐方法 | 凡是涉及 修改指针指向 的操作一律创建新的 指针变量 执行 | 引入 辅助 局部 指针变量 )

    文章目录 一.函数形参使用推荐方法 二.完整代码示例 一.函数形参使用推荐方法 在函数中 , 形参 中的 指针变量 , 不建议直接使用 ; 推荐 在 函数中 , 定义 局部 指针变量 , 接收 形参中 ...

  8. Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

    Python语言学习:基于python五种方法实现使用某函数名[func_01]的字符串格式('func_01')来调用该函数[func_01]执行功能 目录 问题提出 代码五种设计思路 T1方法:e ...

  9. 字符串-文本对齐方法演练

    # 假设:以下内容是从网络上抓取的 # 要求:顺序并且居中对齐输出以下内容 poem = ["\t\n登鹳雀楼","王之涣","白日依山尽\t\n&q ...

最新文章

  1. php连接不到mysql怎么解决,怎么解决php无法连接mysql的问题
  2. JS服务器端开发基础篇(Array.slice方法和splice方法)
  3. Linq之select子句
  4. however the ssl module in Python is not available
  5. python简单代码演示效果-Python Selenium的简单演示程序
  6. UVA11384正整数序列(把123..变成0的最小步数)
  7. v-bind 属性绑定
  8. 深划痕需要大面积补漆吗_剐蹭了需要立马补漆吗?这些小技巧能省不少!
  9. 关于Visual Studio 2019的前期详情
  10. Nginx的Rewrite规则编写
  11. php 关于token、签名、加密的一点理解
  12. [导入]意外的,博客被点名了。参与游戏吧。
  13. Ext.Net配色方案
  14. Android 性能专项之 Memory Monitor 工具-memery
  15. 远程粒子计数器助力药企环境监测 为洁净卫生护航
  16. 牵线搭桥,『桥接模式』
  17. 3D打印开源软件Cura分析(1) 【转】
  18. NTP调整系统时间同步
  19. 2017全球ROI Top25游戏广告平台排行榜
  20. css3的书本翻页效果

热门文章

  1. 从北大高材生被华为辞退中我们需要学到什么?
  2. VMware vSphere 6.7配置最大更改
  3. 敏捷开发系列学习总结(16)——给Scrum Master的十个建议
  4. Linux学习总结(45)——Linux服务器出现卡慢的基本解决方法
  5. Maven学习总结(39)——Maven私服的搭建及使用deploy命令部署构建问题汇总
  6. java development kit64_Java SE Development Kit (JDK) v14.0 x64
  7. 自动路由_小米路由器Mesh首销 多路由自动切换/为智能家居而生
  8. angularjs--resource
  9. 安装使用ubuntu和opensuse
  10. iTween for Unity