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”相應地顯示在刪除空格後。

處理區域設定相關的函式

“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 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告