R语言 用stringr进行字符串操作

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库的四个不同系列。我们相信,本教程肯定对你有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程