通过将空格填充到指定长度来使字符串居中

center a string by padding spaces up to a specified length

我有一个名称向量,如下所示:

x <- c("Marco", "John", "Jonathan")

我需要通过添加前导空格和尾随空格来设置格式,使名称以 10 个字符的字符串居中:

> output
# [1] "  Marco   " "   John    " " Jonathan "

我希望有一个比使用 pasterep 和计算 nchar 更简单的解决方案? (也许 sprintf 但我不知道怎么做)。

这是一个 sprintf() 解决方案,它使用简单的辅助向量 f 来确定低边宽度。然后我们可以使用 * 字符将宽度插入到我们的格式中,使用右侧的 ceiling() 来说明名称中的奇数个字符。由于我们的最大字符宽度为 10,因此每个超过 10 个字符的名称将保持不变,因为我们使用 pmax().

调整这些宽度
f <- pmax((10 - nchar(x)) / 2, 0)

sprintf("%-*s%s%*s", f, "", x, ceiling(f), "")
# [1] "  Marco   "  "   John   "  " Jonathan "  "Christopher"

数据:

x <- c("Marco", "John", "Jonathan", "Christopher")

最终,我知道它不是同一种语言,但值得注意的是 Python(而不是 R)有一个内置的方法来做那,它被称为居中字符串:

example = "John"
example.center(10)
#### '   john   '

奇数右边加号,让你输入你选择的填充字符。虽然它没有矢量化。