我正在嘗試提高基于資料庫查詢的自動文本生成的可讀性。
有沒有一種巧妙的方法來執行這些替換?要在 1 個命令而不是 6 個命令中執行以下操作?
x<-c("Te( )st", "Test()", "Test ()", "Test ( )", "Test ,,", "Test,, ", "Test , ")
out<-c("Test", "Test", "Test", "Test", "Test,", "Test, ", "Test,")
x<-gsub(pattern = "( ", replacement = "(", x, fixed = T)
x<-gsub(pattern = " )", replacement = ")", x, fixed = T)
x<-gsub(pattern = " ,", replacement = ",", x, fixed = T)
x<-gsub(pattern = "()", replacement = "", x, fixed = T)
x<-gsub(pattern = ",,", replacement = ",", x, fixed = T)
x<-gsub(pattern = " ,", replacement = ",", x, fixed = T)
uj5u.com熱心網友回復:
您可以使用
x<-c("Te( )st", "Test()", "Test ()", "Test ( )", "Test ,,", "Test,, ", "Test , ")
gsub("\\(\\s*\\)|\\s (?=[,)])|(?<=\\()\\s |(,), ", "\\1", x, perl=TRUE)
# => [1] "Test" "Test" "Test " "Test " "Test," "Test, " "Test, "
在線查看R 演示和正則運算式演示。詳情:
\(\s*\)|-(,零個或多個空格,然后是 a),或\s (?=[,)])|- 一個或多個空格,然后是,或),或(?<=\()\s |- 一個或多個緊跟在字符前面的空格(,或(,),- 一個逗號被捕獲到組 1 中,然后是一個或多個逗號。
替換為 Group 1 值,即如果 Group 1 匹配,則替換為單個逗號,否則為空字串。
uj5u.com熱心網友回復:
您可以使用mgsub::mgsub.
a = c("( ", " )", " ,", "()",",,") #pattern
b = c("(", ")", ",", "",",") #replacement
x<-c("Te( )st", "Test()", "Test ()", "Test ( )", "Test ,,", "Test,, ", "Test , ")
mgsub::mgsub(x, a, b, fixed = T)
#[1] "Te()st" "Test" "Test " "Test ()" "Test,," "Test, " "Test, "
您可能想要添加其他模式以獲得所需的輸出。
uj5u.com熱心網友回復:
您可以使用multigsub函式,它是gsubR中函式的包裝器。您可以在此處找到檔案。
這是代碼:
multigsub(c("(", ")", ",", "()", ",,", " ,"), c("(", ")", ",", "", ",", ","), x, fixed = T)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/403647.html
標籤:
上一篇:如何找出字串中哪個元音最多
下一篇:如何在AndroidStudio的TextView段落中創建和設定可點擊的行內鏈接的樣式而不設定完整的TextView樣式
