在第一个以大写字母开头的单词后添加逗号
Add comma after first word starting with a capital letter
正如标题所说。我有一堆名字,我需要在第一个以大写字母开头的单词后添加一个逗号。
一个例子:
txt <- c( "de Van-Smith J", "van der Smith G.H.", "de Smith JW", "Smith JW")
结果应该是:
[1] "de Van-Smith, J" "van der Smith, G.H." "de Smith, JW" "Smith, JW"
我主要尝试使用 gsub()
和 stringr::str_replace()
,但我正在努力使用正则表达式,如有任何建议,我们将不胜感激。
你可以使用-
sub("([A-Z][\w-]+)", "\1,", txt, perl = TRUE)
#[1] "de Van-Smith, J" "van der Smith, G.H." "de Smith, JW" "Smith, JW"
其中 ([A-Z][\w-]+)
捕获以大写字母开头且后面有 -
或任意数量的单词字符的单词。
我们可以使用
sub('\b([A-Z]\S+)', "\1,", txt)
[1] "de Van-Smith, J" "van der Smith, G.H." "de Smith, JW" "Smith, JW"
另一个sub
选项
> sub("([A-Z].*)(?=\s)", "\1,", txt, perl = TRUE)
[1] "de Van-Smith, J" "van der Smith, G.H." "de Smith, JW"
[4] "Smith, JW"
正如标题所说。我有一堆名字,我需要在第一个以大写字母开头的单词后添加一个逗号。
一个例子:
txt <- c( "de Van-Smith J", "van der Smith G.H.", "de Smith JW", "Smith JW")
结果应该是:
[1] "de Van-Smith, J" "van der Smith, G.H." "de Smith, JW" "Smith, JW"
我主要尝试使用 gsub()
和 stringr::str_replace()
,但我正在努力使用正则表达式,如有任何建议,我们将不胜感激。
你可以使用-
sub("([A-Z][\w-]+)", "\1,", txt, perl = TRUE)
#[1] "de Van-Smith, J" "van der Smith, G.H." "de Smith, JW" "Smith, JW"
其中 ([A-Z][\w-]+)
捕获以大写字母开头且后面有 -
或任意数量的单词字符的单词。
我们可以使用
sub('\b([A-Z]\S+)', "\1,", txt)
[1] "de Van-Smith, J" "van der Smith, G.H." "de Smith, JW" "Smith, JW"
另一个sub
选项
> sub("([A-Z].*)(?=\s)", "\1,", txt, perl = TRUE)
[1] "de Van-Smith, J" "van der Smith, G.H." "de Smith, JW"
[4] "Smith, JW"