String 在大写和小写字母字符串中的特定位置添加空格
亲爱的stackoverflow用户: 许多人遇到需要修改字符串的情况。我见过很多 与字符串修改相关的帖子。但是,我还没有找到我正在寻找的解决方案 对于我相信我的帖子会对其他面临类似问题的R用户有用 挑战。我想从熟悉字符串的R用户那里寻求一些帮助 修改 我一直在尝试修改一个字符串,如下所示String 在大写和小写字母字符串中的特定位置添加空格,string,r,gsub,String,R,Gsub,亲爱的stackoverflow用户: 许多人遇到需要修改字符串的情况。我见过很多 与字符串修改相关的帖子。但是,我还没有找到我正在寻找的解决方案 对于我相信我的帖子会对其他面临类似问题的R用户有用 挑战。我想从熟悉字符串的R用户那里寻求一些帮助 修改 我一直在尝试修改一个字符串,如下所示 x <- "Marcus HELLNERJohan OLSSONAnders SOEDERGRENDaniel RICHARDSSON" x这是通过查找和捕获两个连续的子模式来实现的,第一个由一个大写
x <- "Marcus HELLNERJohan OLSSONAnders SOEDERGRENDaniel RICHARDSSON"
x这是通过查找和捕获两个连续的子模式来实现的,第一个由一个大写字母(姓氏的末尾)组成,第二个由一个大写字母和一个小写字母组成(用来表示名字的开头)。无论在哪里找到这两个组,它们都会被捕获并由它们自己替换为一个空格(下面调用中的“\\1\\2”
)
x如果要将向量分离为名称向量,这将使用具有零宽度lookbehind和lookbeahead断言的正则表达式拆分字符串
strsplit(x, split = "(?<=[[:upper:]])(?=[[:upper:]][[:lower:]])",
perl = TRUE)[[1]]
# [1] "Marcus HELLNER" "Johan OLSSON" "Anders SOEDERGREN"
# [4] "Daniel RICHARDSSON"
strsplit(x,split=“(?滑雪迷,嗯?去瑞典!与“马库斯”一起的姓是什么?@RScriv等@RichScriven NAThank非常感谢你Josh。现在我又学到了一件关于字符串修改的事情。非常感谢你,Blue。最后,我需要提取每个名字。因此你的建议非常有用!
strsplit(x, split = "(?<=[[:upper:]])(?=[[:upper:]][[:lower:]])",
perl = TRUE)[[1]]
# [1] "Marcus HELLNER" "Johan OLSSON" "Anders SOEDERGREN"
# [4] "Daniel RICHARDSSON"