【发布时间】:2016-01-17 13:20:36
【问题描述】:
我试图在第一个反斜杠之前提取字符串的一部分,但我似乎无法让它正常工作。
根据 strsplit 的手册页和在线搜索后,我尝试了多种让它工作的方法。
在我的实际情况中,字符串位于我从数据库连接获取的数据框中,但我可以通过以下方式简化情况:
> strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3","\\",fixed=TRUE) [[1]] [1] "BLAAT1\022E:" "BLAAT2" "BLAAT3" > strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3","\\",fixed=FALSE) strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3", "\\", fixed = FALSE) 中的错误: 无效的正则表达式“\”,原因是“尾随反斜杠” > strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3","\\\\",fixed=TRUE) [[1]] [1] "BLAAT1\022E:\\BLAAT2\\BLAAT3" > strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3","\\\\",fixed=FALSE) [[1]] [1] "BLAAT1\022E:" "BLAAT2" "BLAAT3"预期的输出也会在 BLAAT1 和 022E 之间的 \ 上拆分:
提前致谢
【问题讨论】:
-
您想要 4 个元素作为预期输出,还是仅将
BLAAT和02E:\\BLATT2\\BLAAT3作为第二个拆分。顺便说一句,\022这是一个 unicode 符号 -
你这里有ASCII字符,
strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3","[[:cntrl:]]")给你想要的吗? -
"\022"是一个字符。 -
或
strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3","[^[:print:]]")