R 中使用 stringr 进行字符串操作
stringr 包是一个流行的 R 包,它提供了用于操作和处理 R 中字符串的函数和工具。此包为处理字符串提供了统一且方便的接口,并且它提供了广泛的功能来执行搜索、匹配、替换和拆分字符串等任务。
在本文中,我们将讨论使用“stringr”包在 R 中进行字符串操作。“stringr”包为我们提供了以下“stringr”中的函数族:
字符操作函数:此类函数允许我们处理字符串的字符。
处理空格的函数族。
其操作依赖于区域设置的函数族。
用于处理的模式匹配函数族。
在本教程中,我们将详细讨论这些函数族。
处理字符串的单个字符
在本节中,我们将看到可以使用哪些函数来处理字符串的单个字符。这些函数如下:
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”作为子字符串,因为它从原始字符串“Bhuwanesh Nainwal”的索引 0 开始,到索引 9 结束。
修改字符串或字符串向量:
示例
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()
此函数通过在字符串的两端或两端添加空格来填充字符串。它有三个版本,用于在左侧、右侧或两侧添加空格。让我们逐一讨论它们:
在字符串的左侧添加空格:
要添加的空格数被确定为 N - length(myString) 和 0 中的最大值。例如,如果我们的字符串是“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"
在字符串的左侧添加了空格。
在字符串的右侧添加空格:
要添加的空格数被确定为 N - length(myString) 和 0 中的最大值。例如,如果我们的字符串是“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"
正如在输出中清楚可见的那样,在右侧添加了空格。
在字符串的两端添加空格:
要添加的空格数被确定为 N - length(myString) 和 0 中的最大值。例如,如果我们的字符串是“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"
正如您所看到的,字符串已根据参数“left”、“right”或“both”相应地显示在删除空格后。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
处理区域设置相关的函数
“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。否则,值为 False。
结论
在本教程中,我们讨论了如何使用 stringr 库在 R 中操作字符串。我们讨论了属于 stringr 库的四个不同的函数族。我们相信本教程肯定对您有所帮助。