删除 R 中破折号周围的空格
Removing spaces surrounding dashes in R
我有一个形式为 [1] "James KNIGHT – S"
的字符串,我希望它显示为 [1] "James KNIGHT–S"
(通常有更多的文本前置和继续)。在我的测试用例中,我可以使用 gsub
或 str_replace_all
例如:
gsub(" - ", "-", x)
但在我的字符串中,这不起作用(两者都是 utf-8
)。我正在尝试找出如何寻找不同类型的破折号(em、en 等?),以确保我以后可以 select(并删除)这些破折号,并想知道这是否是这里的问题,或者是否我还缺少其他东西。 IE。我不知道测试用例和文件数据之间有什么不同。理想情况下,任何带有空格的破折号和单词都会折叠成“-”。
我们可以使用 \p{Pd}
来匹配 em, en
unicode 破折号。在这里,我使用正则表达式环视来匹配破折号之前或之后的一个或多个空格 (\s+
),并将其替换为 ''
。
gsub("\s+(?=\p{Pd})|(?<=\p{Pd})\s+", "", str1, perl=TRUE)
如果需要保持一致,所有破折号都可以用简单的“-”代替:
gsub("\p{Pd}", "-", str1, perl=TRUE)
我有一个形式为 [1] "James KNIGHT – S"
的字符串,我希望它显示为 [1] "James KNIGHT–S"
(通常有更多的文本前置和继续)。在我的测试用例中,我可以使用 gsub
或 str_replace_all
例如:
gsub(" - ", "-", x)
但在我的字符串中,这不起作用(两者都是 utf-8
)。我正在尝试找出如何寻找不同类型的破折号(em、en 等?),以确保我以后可以 select(并删除)这些破折号,并想知道这是否是这里的问题,或者是否我还缺少其他东西。 IE。我不知道测试用例和文件数据之间有什么不同。理想情况下,任何带有空格的破折号和单词都会折叠成“-”。
我们可以使用 \p{Pd}
来匹配 em, en
unicode 破折号。在这里,我使用正则表达式环视来匹配破折号之前或之后的一个或多个空格 (\s+
),并将其替换为 ''
。
gsub("\s+(?=\p{Pd})|(?<=\p{Pd})\s+", "", str1, perl=TRUE)
如果需要保持一致,所有破折号都可以用简单的“-”代替:
gsub("\p{Pd}", "-", str1, perl=TRUE)