R语言 用stringr进行字符串操作
stringr包是一个流行的R包,它提供了在R中操作和处理字符串的函数和工具。这个包为处理字符串提供了一个一致和方便的接口,它为搜索、匹配、替换和拆分字符串等任务提供了广泛的函数。
在这篇文章中,我们将讨论用 “stringr “包在R中进行字符串操作。stringr包在 “stringr “中为我们提供了以下几个系列的函数-
- 字符操作函数。此类函数允许我们处理字符串的字符。
-
一个处理空白处的函数系列。
-
一个函数系列,其操作取决于locale。
-
一系列的模式匹配函数来处理。
在本教程中,我们将详细讨论这些函数系列。
处理字符串的单个字符
在本节中,我们将看到一些函数,利用这些函数我们可以处理字符串中的单个字符。这些函数有以下几种
str_length()函数
stringr为我们提供了str_length()函数,使用该函数我们可以得到一个字符串中存在的字符数。现在让我们考虑以下程序,说明这个函数的工作原理
示例
library(stringr)
myString = "tutorialspoint"
print(paste("The length of the string is equal to", str_length(myString)))
输出
[1] "The length of the string is equal to 14"
正如你在输出中看到的,myString的长度已经显示出来了。
str_sub()函数
- 从一个字符串中提取一个子串 –
str_sub()函数用于获取一个字符串的连续字符。让我们看看下面的程序,说明这个函数的工作原理
示例
library(stringr)
myString = "tutorialspoint"
print(paste("The substring is", str_sub(myString, 0, 9)))
输出
[1] "The substring is tutorials"
正如你在输出中看到的,子串 “tutorials “已经被提取出来了。
- 从字符串向量中提取子串 —
示例
我们也可以向str_sub()函数传递一个向量,子串将从所有单独的字符串中提取出来。
library(stringr)
myVector <- c("tutorialspoint", "Bhuwanesh Nainwal")
print(paste("The substring is", str_sub(myVector, 0, 9)))
输出
[1] "The substring is tutorials" "The substring is Bhuwanesh"
输出结果显示 “Bhuwanesh “是子串,因为它从索引0开始,在原始字符串的索引9结束。”Bhuwanesh Nainwal”。
- 修改一个字符串或字符串的向量——。
示例
str_sub()函数也可以用来修改字符串或字符串的向量。例如,考虑下面的程序-
library(stringr)
myString = "tutorialspoint"
myVector <- c("tutorialspoint", "TutorialSpoint")
str_sub(myString, 0, 9) <- "TUTORIALS"
str_sub(myVector, 0, 9) <- "TUTORIALS"
print(myString)
print(myVector)
输出
[1] "TUTORIALSpoint"
[1] "TUTORIALSpoint" "TUTORIALSpoint"
正如你在输出中看到的,从索引0开始到索引9结束的字符串已经被替换成了字符串。”TUTORIALS”。
处理字符串的空白处
在本节中,我们将讨论如何使用stringr库来处理空白处。有两个重要的函数可以用来处理空白处,下面介绍了这两个函数。
str_pad()
该函数通过在字符串的任何一端或两端添加空白来填充字符串。它有三个版本,分别在左端、右端或两端添加空白。让我们逐一讨论它们。
在字符串的左端添加空格—-。
例如,如果我们的字符串是 “Bhuwanesh”(注意,字符数等于9),如果我们将N值传递为12,那么将添加三个空格;如果我们将N值传递为8,那么将不添加空格,原始字符串将不会被修改。
示例
library(stringr)
myString = "tutorialspoint"
myVector <- c("tutorialspoint", "Bhuwanesh")
print(str_pad(myString, 20))
print(str_pad(myVector, 24))
print(str_pad(myString, 8))
print(str_pad(myVector, 7))
输出
[1] " tutorialspoint"
[1] " tutorialspoint" " Bhuwanesh"
[1] "tutorialspoint"
[1] "tutorialspoint" "Bhuwanesh"
在字符串的左端添加了空白点。
在字符串的右端添加空格—-。
例如,如果我们的字符串是 “Bhuwanesh”(注意,字符数等于9),如果我们将N值传递为12,那么将添加三个空白,或者如果我们将N值传递为8,那么将不添加空白,原始字符串将不会被修改。
示例
library(stringr)
myString = "tutorialspoint"
myVector <- c("tutorialspoint", "Bhuwanesh")
print(str_pad(myString, 20, "right"))
print(str_pad(myVector, 24, "right"))
print(str_pad(myString, 8, "right"))
print(str_pad(myVector, 7, "right"))
输出
[1] "tutorialspoint "
[1] "tutorialspoint " "Bhuwanesh "
[1] "tutorialspoint"
[1] "tutorialspoint" "Bhuwanesh"
在输出中可以清楚地看到,右端已经添加了空白。
在字符串的两端添加空格—-。
例如,如果我们的字符串是 “Bhuwanesh”(注意,字符数等于9),如果我们将N值传递为12,那么将添加三个空格;如果我们将N值传递为8,那么将不添加空格,原始字符串将不会被修改。
示例
library(stringr)
myString = "tutorialspoint"
myVector <- c("tutorialspoint", "Bhuwanesh")
print(str_pad(myString, 20, "both"))
print(str_pad(myVector, 24, "both"))
print(str_pad(myString, 8, "both"))
print(str_pad(myVector, 7, "both"))
输出
[1] " tutorialspoint "
[1] " tutorialspoint " " Bhuwanesh "
[1] "tutorialspoint"
[1] "tutorialspoint" "Bhuwanesh"
正如你在输出中看到的,两端都加了空格。
str_trim()
这个函数与str_pads()函数正好相反。它修剪字符串两端或其中任何一端的空白处。它也有三个版本,分别从左端、右端或两端修剪空白处。
示例
library(stringr)
myString = " tutorialspoint "
myVector <- c(" tutorialspoint", " Bhuwanesh ")
print(str_trim(myString, "left"))
print(str_trim(myString, "right"))
print(str_trim(myString, "both"))
print(str_trim(myVector, "left"))
print(str_trim(myVector, "right"))
print(str_trim(myVector, "both"))
输出
[1] "tutorialspoint "
[1] " tutorialspoint"
[1] "tutorialspoint"
[1] "tutorialspoint" "Bhuwanesh "
[1] " tutorialspoint" " Bhuwanesh"
[1] "tutorialspoint" "Bhuwanesh"
正如你所看到的,在根据参数 “左”、”右 “或 “两者 “去除空白后,字符串已经被显示出来。
处理本地敏感的函数
stringr “库也为我们提供了这种对本地敏感的函数。我们所说的本地敏感是指它们在不同的情况下有不同的表现。下面将详细讨论这类函数。
str_to_title()和str_to_upper()函数
这些函数一般用于对字符串的字符进行大写。
示例
library(stringr)
myString = "tutorialspoint is the greatest learning source"
myVector <- c("tutorialspoint is the greatest learning source", "Bhuwanesh is an author")
print(str_to_title(myString))
print(str_to_title(myVector))
print(str_to_upper(myString))
print(str_to_title(myVector))
输出
[1] "Tutorialspoint Is The Greatest Learning Source"
[1] "Tutorialspoint Is The Greatest Learning Source"
[2] "Bhuwanesh Is An Author"
[1] "TUTORIALSPOINT IS THE GREATEST LEARNING SOURCE"
[1] "Tutorialspoint Is The Greatest Learning Source"
[2] "Bhuwanesh Is An Author"
正如你在输出中看到的,当应用str_to_title()函数时,所有单词的第一个字符都被大写了,而在使用str_to_upper()函数时,所有单词都被大写了。
我们还可以使用str_sort()等函数对字符串向量进行排序,以及str_order()对字符向量进行排序。以下是这些函数的工作原理。
示例
library(stringr)
myVector <- c("Harshit", "Tutorialspoint", "Bhuwanesh", "Nainwal")
cat("The vector after sorting:
")
print(str_sort(myVector))
cat("The letters after ordering:
")
print(str_order(letters))
输出
The vector after sorting:
[1] "Bhuwanesh" "Harshit" "Nainwal" "Tutorialspoint"
The letters after ordering:
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
[26] 26
模式匹配
有时,我们可能需要在给定的字符串中匹配一个模式。stringr库为我们提供了以下可以处理模式匹配的函数—-。
str_detect()
str_detect()函数用于检测模式是否与字符串匹配。
示例
library(stringr)
myString = "219 733 8965"
myVector <- c(
"tutorialspoint",
"219 733 8965",
"529-295-8753",
"519 633 1965"
)
pattern <- "([2-9][0-9]{2})[- .]([2-9]{3})[- .]([2-9]{2})"
print(str_detect(myString, pattern))
print(str_detect(myVector, pattern))
输出
[1] TRUE
[1] FALSE TRUE TRUE FALSE
正如你在输出中看到的,当模式与字符串匹配时,函数返回的值是True。否则,该值为假。
结论
在本教程中,我们讨论了如何使用stringr库在R中操作字符串。我们讨论了属于stringr库的四个不同系列。我们相信,本教程肯定对你有所帮助。