如何在stringr::str_split()中使用"."作为分隔符?为何结果为空?
stringr::str_split 使用"."作为分隔符的问题解答
1. 为何输出全是空字符串?
stringr::str_split()函数默认将传入的分隔符解析为正则表达式。而在正则语法中,.是一个特殊元字符,代表匹配任意单个字符(除换行符外)。当你用.作为分隔符时,相当于把目标字符串里的每一个字符都当作分隔符来拆分,最终返回的自然就是全空的字符串数组。
比如执行str_split("Who.am.I?", ".")时,每一个字符(包括W、h、o、.、a等)都会被当作分隔符,拆分后就只剩下空字符串了。
2. 如何将"."作为分隔符使用?
有两种简单有效的方法:
- 正则转义法:在R中,要表示正则里的字面量
.,需要用双反斜杠\\.进行转义,代码示例:
library(stringr) str_split("Who.am.I?", "\\.") # 结果:[["Who", "am", "I?"]]
- 固定字符串法:使用
fixed()函数包裹分隔符,强制函数将其视为普通字符串而非正则表达式,代码示例:
library(stringr) str_split("Who.am.I?", fixed(".")) # 结果:[["Who", "am", "I?"]]
内容的提问来源于stack exchange,提问作者Shinji Tokunaga
相关产品推荐
相关产品推荐

