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 库的四个不同的函数族。我们相信本教程肯定对您有所帮助。

更新于: 2023-01-17

817 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告